【问题标题】:RegEx Overlapping String [duplicate]正则表达式重叠字符串 [重复]
【发布时间】:2017-10-27 22:06:32
【问题描述】:

我有一个这样的字符串。

[system]a[/system][system]b[/system][system]c[/system]

我想返回 [system] 和 [/system] 标签之间的值。

所以对于这个例子,它应该返回 a、b、c。 (在 php 中有 preg_match_all 函数)

我尝试使用此模式\[system\](.*)\[\/system\],但它返回a[/system][system]b[/system][system]c

它只取第一个开始标签并以最后一个结束标签结束。

我该怎么做?

【问题讨论】:

  • 添加一个?,即将(.*)改为非贪婪(.*?)
  • @degant 谢谢,它成功了。您应该将其发布在答案部分。

标签: php regex


【解决方案1】:

让你的量词不贪婪(不情愿)。像这样添加?

(.*?)

这将指示正则表达式匹配尽可能少,而不是贪婪并尽可能多地匹配。

【讨论】:

    猜你喜欢
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-15
    • 2023-04-09
    相关资源
    最近更新 更多