正则表示字后面没有星号

时间:2014-09-10 09:10:24

标签: php regex

我需要一个正则表达式(用于php)匹配任何以+开头并且不以*结尾的1或2个字符。

到目前为止,我得到了这个:/\+\b\w{1,2}\b/找到了+a3,但也找到+a3*,因为星号被视为在该词后面。

在像+find +in +me*这样的字符串中,我只想找到+in而不是+me*

我尝试使用/\+\b[\w\*]{1,2}\b/,但这似乎没有任何区别。

preg_replace($regex,'','+do+find +in +me*'); //expected result: '+do+find +me*'

1 个答案:

答案 0 :(得分:3)

怎么样:

/\+\w{1,2}\b(?!\*)/

(?!\*)是一个负面的预测,可以确保*不会跟随这两个字符。

\b\+之间\w不是强制性的。

根据评论进行编辑:

  

这匹配“无论+ 2c”中的“+ 2c”我需要改变它不会匹配这个但只匹配“无论是+ 2c”还是“+ 2c无论什么”

使用这个:

/(?:^|\s)\+\w{1,2}(?:\s|$)

根据评论:

/(?<=^|\s)\+\w{1,2}(?:\s|$)/