php - 正则表达式和 preg_replace_callback

标签 php regex

我的正则表达式有问题。
我正在使用 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/

相关文章:

php - 如何检查整数是否在范围内?

php - 关于 PHP session 的几个问题

regex - 如何使用Powershell从文件构造哈希表?

javascript - javascript 中的正则表达式只允许数字、逗号和一个小数点

java - csv 匹配中的 ANT 元素

php 类和 jQuery

php - Symfony 2 Doctrine 2 使用 inversedBy 和 mappedBy 进入多对多关系?

javascript - 在 Angular JS 中同时发送表单数据和上传文件

asp.net - 简单整数正则表达式

regex - htaccess 和 URL 中的符号