Php regex和preg_replace_回调
正则表达式有问题。Php regex和preg_replace_回调,php,regex,Php,Regex,正则表达式有问题。 我正在使用令牌,我必须解析如下文本: Just some random text #IT=AB|First statement# #xxxx=xxx|First statement|Second statement# More text #IT=AB|First statement# #xxxx=xxx|First statement|Second statement# 我使用preg\u replace\u callback,因为我必须使用第一个语句或第二个语句,这取
我正在使用令牌,我必须解析如下文本:
Just some random text
#IT=AB|First statement# #xxxx=xxx|First statement|Second statement#
More text
#IT=AB|First statement#
#xxxx=xxx|First statement|Second statement#
我使用preg\u replace\u callback
,因为我必须使用第一个语句或第二个语句,这取决于第一个表达式是否为真;这是一种IF…ELSE…
语句
我所期望的是这样的两个元素:
Just some random text
#IT=AB|First statement# #xxxx=xxx|First statement|Second statement#
More text
#IT=AB|First statement#
#xxxx=xxx|First statement|Second statement#
这样我就可以在回调函数中开始操作它们了。我尝试使用这个正则表达式
/#.*/
,但是我得到了整个字符串,它没有被解析成元素
我怎样才能做到这一点?对不起,我不喜欢正则表达式:(量词
*
在默认情况下是贪婪的。因此*
将尽可能多地匹配,因此它也将匹配#
。要解决这一问题,可以通过在*
之后添加?
使*
不贪婪。现在*?
将尽可能少地尝试
/#.*?#/
或者,您可以只查找两个字符之间的非字符:
默认情况下,量词
*
是贪婪的。因此*
将尽可能多地匹配,因此它也将匹配#
。要解决此问题,可以通过在*
之后添加?
使其不贪婪。现在*.
将尽可能少地匹配
/#.*?#/
或者,您可以只查找两个字符之间的非字符:
它能工作!非常感谢。请你解释一下错误在哪里?是的,尽可能多地匹配(包括沿途找到的任何
。*?
匹配尽可能少的字符,[^]*
匹配除散列以外的任何字符。它可以工作!非常感谢。请您解释一下错误在哪里?*
是尽可能多的匹配(包括它在过程中找到的任何
字符)。*?
匹配尽可能少的字符,[^.]*
匹配除散列以外的任何字符。