欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2022-06-11 14:09:59
...
$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 = "/\]+\>[^\/";

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

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

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

我的正则会这么写:

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

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

相关标签: php 正则表达式