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

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

因此,示例文件:

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

以上是 PHP正则表达式匹配以特殊字符开头的行 的全部内容, 来源链接: utcz.com/qa/413789.html

回到顶部