我有一个带有一些配置值的文本文件.有一个评论以#开头我试图找到一个正则表达式模式,找出所有以#开头的行
所以,示例文件:
1st line
#test line this
line #new line
aaaa #aaaa
bbbbbbbbbbb#
cccccccccccc
#ddddddddd
Run Code Online (Sandbox Code Playgroud)
我想找到
#test line this
#ddddddddd
Run Code Online (Sandbox Code Playgroud)
因为只有这两行以#开头我试过以下代码:
preg_match_all("/^#(.*)$/siU",$text,$m);
var_dump($m);
Run Code Online (Sandbox Code Playgroud)
但它总是输出空数组.有人可以帮忙吗?
Tim*_*ker 17
你忘了多修饰符(你应该不使用单线改性剂;也是不区分大小写的修饰符是不必要的,因为还有ungreedy修改):
preg_match_all("/^#(.*)$/m",$text,$m);
Run Code Online (Sandbox Code Playgroud)
说明:
/m允许^和$匹配行的开头/结尾,而不仅仅是整个字符串(这里需要)/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]);
Run Code Online (Sandbox Code Playgroud)
结果:
[0] => #test line this
[1] => #ddddddddd
Run Code Online (Sandbox Code Playgroud)