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