2

我有一个正则表达式的问题。
我正在使用令牌,我必须解析这样的文本:

Just some random text
#IT=AB|First statement# #xxxx=xxx|First statement|Second statement#
More text

preg_replace_callback之所以使用,是因为我必须使用第一个语句或第二个语句,这取决于第一个表达式是否为真;这是一种IF...ELSE...声明。

我期望的是这样的两个元素:

#IT=AB|First statement# 
#xxxx=xxx|First statement|Second statement#

所以我可以在我的回调函数中开始操作它们。
我试过这个正则表达式/#.*#/,但我得到了整个字符串,它没有被解析成元素。

我怎样才能做到这一点?对不起,正则表达式不是我的事:(

4

1 回答 1

4

量词*默认是贪婪的。因此,a.*将尽可能匹配,因此它也将匹配 a #。要解决此问题,您可以通过在其后添加 a 来使*非贪婪?。现在,a.*?将尽可能少地尝试。

/#.*?#/

或者您可以只查找两个 # 之间的非 # 字符:

/#[^#]*#/
于 2012-05-03T10:32:09.750 回答