正则表达式 - php正则匹配内容?
程序员文章站
2023-12-29 10:36:34
...
$s= #sayhi
aaa
#牢骚
bbb
#test
ccc
想要匹配出
#sayhi
#牢骚
#test
这种标签,
于是用:
preg_match_all("/#[a-zA-Z0-9\x{4e00}-\x{9fa5}]+/u", $s, $catspan);
匹配出的$catspan是
Array ( [0] =>
Array (
[0] => #sayhi
aaa #牢骚
bbb #test
)
)
接下来该怎么办?
回复内容:
$s= #sayhi
aaa
#牢骚
bbb
#test
ccc
想要匹配出
#sayhi
#牢骚
#test
这种标签,
于是用:
preg_match_all("/#[a-zA-Z0-9\x{4e00}-\x{9fa5}]+/u", $s, $catspan);
匹配出的$catspan是
Array ( [0] =>
Array (
[0] => #sayhi
aaa #牢骚
bbb #test
)
)
接下来该怎么办?
preg_match_all("/.*>#[a-zA-Z0-9x{4e00}-x{9fa5}]+/u", $s, $catspan);
问题在这个.*
上,正则默认是贪婪匹配,而.
本身就代表所有字符,自然包括>
在内,所以就把后面的内容都匹配进去了。
通过修改为.*?
可以实现非贪婪匹配,这样就能正确结束于>
上,获得你想要的结果。
$pattern = "/\]+\>[^\/";
preg_match_all('/]+>#[^/', $s, $catspan);
我的正则会这么写:
]*?>#[\s\S]*?
不清楚你的写法是什么情况。