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#
这样我就可以在回调函数中开始操作它们了。
我尝试使用这个正则表达式
/#.*/
,但是我得到了整个字符串,它没有被解析成元素


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

量词
*
在默认情况下是贪婪的。因此
*
将尽可能多地匹配,因此它也将匹配
#
。要解决这一问题,可以通过在
*
之后添加
使
*
不贪婪。现在
*?
将尽可能少地尝试

/#.*?#/
或者,您可以只查找两个字符之间的非字符:


默认情况下,量词
*
是贪婪的。因此
*
将尽可能多地匹配,因此它也将匹配
#
。要解决此问题,可以通过在
*
之后添加
使其不贪婪。现在
*.
将尽可能少地匹配

/#.*?#/
或者,您可以只查找两个字符之间的非字符:


它能工作!非常感谢。请你解释一下错误在哪里?是的,尽可能多地匹配(包括沿途找到的任何
*?
匹配尽可能少的字符,
[^]*
匹配除散列以外的任何字符。它可以工作!非常感谢。请您解释一下错误在哪里?
*
是尽可能多的匹配(包括它在过程中找到的任何
字符)。
*?
匹配尽可能少的字符,
[^.]*
匹配除散列以外的任何字符。