我需要一个正则表达式(用于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*'
答案 0 :(得分:3)
怎么样:
/\+\w{1,2}\b(?!\*)/
(?!\*)
是一个负面的预测,可以确保*
不会跟随这两个字符。
\b
和\+
之间\w
不是强制性的。
根据评论进行编辑:
这匹配“无论+ 2c”中的“+ 2c”我需要改变它不会匹配这个但只匹配“无论是+ 2c”还是“+ 2c无论什么”
使用这个:
/(?:^|\s)\+\w{1,2}(?:\s|$)
根据评论:
/(?<=^|\s)\+\w{1,2}(?:\s|$)/