我的正则表达式有问题。
我正在使用 token ,并且必须解析如下文本:
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#
这样我就可以开始在回调函数中操作它们了。
我尝试使用此正则表达式 /#.*#/
,但我得到了整个字符串,它没有解析为元素。
我怎样才能实现这一目标?抱歉,正则表达式不是我的菜:(
最佳答案
量词*
默认是贪婪的。因此 .*
将尽可能匹配,因此它也会匹配 #
。要解决此问题,您可以通过在其后添加 ?
使 *
非贪婪。现在 .*?
将尝试尽可能少的内容。
/#.*?#/
或者您可以仅查找两个 # 之间的非 # 字符:
/#[^#]*#/
关于php - 正则表达式和 preg_replace_callback,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10429533/