当前位置: 首页 > 面试题库 >

PHP正则表达式匹配以特殊字符开头的行

葛驰
2023-03-14
问题内容

我有一个带有某些配置值的文本文件。以#开头的注释我试图找到一个正则表达式模式,该模式将找出以#开头的所有行。

因此,示例文件:

1st line
#test line this 
line #new line
aaaa #aaaa
bbbbbbbbbbb#
cccccccccccc
#ddddddddd

我想找到

#test line this 
#ddddddddd

因为只有这两行以#开头,所以我尝试了以下代码:

preg_match_all("/^#(.*)$/siU",$text,$m);
var_dump($m);

但是它总是输出空数组。有人可以帮忙吗?


问题答案:

你忘了多修饰符(你应该 使用单线改性剂;也是不区分大小写的修饰符是不必要的,因为还有ungreedy修改):

preg_match_all("/^#(.*)$/m",$text,$m);

说明:

  • /m允许^and $在行的开头/结尾进行匹配,而不仅仅是整个字符串(您在此处需要)
  • /s 允许点匹配换行符(您在此处不需要)
  • /i 启用不区分大小写的匹配(此处不需要)
  • /U打开不贪心的匹配(由于锚点,在这里没有什么区别)

一个PHP代码演示:

$text = "1st line\n#test line this \nline #new line\naaaa #aaaa\nbbbbbbbbbbb#\ncccccccccccc\n#ddddddddd"; 
preg_match_all("/^#(.*)$/m",$text,$m);
print_r($m[0]);

结果:

[0] => #test line this 
[1] => #ddddddddd


 类似资料:
  • 本文向大家介绍正则表达式匹配各种特殊字符,包括了正则表达式匹配各种特殊字符的使用技巧和注意事项,需要的朋友参考一下 写个可以匹配一下各种特殊字符的正则表达式 这个匹配所有键盘上可见的非字母和数字的符号 这个是输入框防止特殊字符勿输入验证,包括键盘上所有特殊字符的英文和中文状态。需要者可以根据自身需求而定!谢谢! [^\w\s]+ 匹配非空 非字母 非数字 即可 1 数字:^[0-9]*$ 2 n位

  • 我有一个类似这样的字符串: 但是我得到了一个 你知道我做错了什么吗?

  • 我试图为密码字段创建一个验证,它只允许字符和 时有什么区别,以及哪些字符来自

  • 问题内容: 什么正则表达式将匹配Java中的任何ASCII字符? 我已经尝试过: 但是发现它与我想要的很多东西都不匹配(例如空格,括号等)。我希望避免以如下格式显式列出所有127个ASCII字符: 问题答案: 我没用过但是我用过

  • 我想在Java中使用Regex提取某种字符串。我目前有这样的模式: 应该匹配以“a”开头、以“se”结尾的字符串。这不起作用。我错过了什么吗? 删除了模式末尾的 \n 行并将其替换为“$”:仍然没有匹配项。正则表达式从我这边看起来是合法的。 我想提取的是从临时字符串中提取的“a se”。

  • 我们目前正在使用在Java的函数中从字符串中删除特殊字符。我们注意到,当连字符与数字混合时,我们需要允许连字符。 不匹配连字符的示例: 1-2-3 -1-23-4562 --1--2--3--4- --9-a--7 425-12-3456 将匹配连字符的示例: < li> - a - b - c 沃尔玛超市 我们认为我们使用这个SO问题作为参考制定了一个正则表达式来满足后一个标准,但我们不知道如何