我的正则表达式有问题 我正在使用令牌,我必须解析这样的文字:
Just some random text
#IT=AB|First statement# #xxxx=xxx|First statement|Second statement#
More text
我使用preg_replace_callback
因为我必须使用第一个语句或第二个语句,这取决于第一个表达式是否为真;这是一种IF...ELSE...
陈述。
我期望的是2个这样的元素:
#IT=AB|First statement#
#xxxx=xxx|First statement|Second statement#
所以我可以在回调函数中开始操作它们
我尝试使用这个正则表达式/#.*#/
,但是我获得了整个字符串,它没有被解析为元素。
我怎样才能实现这一目标?对不起,但正则表达式不是我的事情:(
答案 0 :(得分:4)
默认情况下,量词*
是贪婪的。因此,.*
会尽可能多地匹配,因此它也会匹配#
。要解决此问题,您可以通过在*
之后添加?
来使.*?
非贪婪。现在/#.*?#/
会尝试尽可能少。
/#[^#]*#/
或者您只能在两个#:
之间查找非#字符{{1}}