当前位置:Gxlcms > PHP教程 > 正则表达式-php正则匹配内容?

正则表达式-php正则匹配内容?

时间:2021-07-01 10:21:17 帮助过:12人阅读

$s= #sayhi‍
   aaa
   #牢骚‍
    bbb 
    #test
    ccc

想要匹配出

#sayhi#牢骚#test

这种标签,
于是用:

preg_match_all("/#[a-zA-Z0-9\x{4e00}-\x{9fa5}]+<\\/span>/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}]+<\\/span>/u", $s, $catspan);

匹配出的$catspan是

   Array ( [0] =>
      Array ( 
          [0] => #sayhi‍
            aaa #牢骚‍
            bbb #test 
            ) 
         )
     
 
 

接下来该怎么办?

preg_match_all("/.*>#[a-zA-Z0-9x{4e00}-x{9fa5}]+<\/span>/u", $s, $catspan);

问题在这个.*上,正则默认是贪婪匹配,而.本身就代表所有字符,自然包括>在内,所以就把后面的内容都匹配进去了。
通过修改为.*?可以实现非贪婪匹配,这样就能正确结束于>上,获得你想要的结果。

$pattern = "/\]+\>[^\<]+\<\/span\>/";

preg_match_all('/]+>#[^<]+<\\/span>/', $s, $catspan);

我的正则会这么写:

]*?>#[\s\S]*?

不清楚你的写法是什么情况。

人气教程排行