【问题标题】:REGEX, find string that contain string in string正则表达式,在字符串中查找包含字符串的字符串
【发布时间】:2018-07-26 11:50:56
【问题描述】:

我有以下文本,我需要一个 preg_match_all 来查找所有以 [ 开头并以 ] 结尾的字符串,其中至少包含一个在 {} 之间的字符串,我尝试并未能为此构建正确的正则表达式,有人可以帮忙吗?

Go home [if you have {a-home} or not] [or yes, you do have]

【问题讨论】:

  • “我尝试并未能为此构建正确的正则表达式”,向我们展示您的尝试。
  • \[[^\]]+\]怎么样

标签: regex preg-match preg-match-all rules


【解决方案1】:

认为这将适合您的情况\[[^[]*?{.+?}.*?\]

根据你的说法,我认为你必须在 { } 之间有一些东西才能匹配,但如果不是这种情况,只需将 + 更改为 *

在这里试试regex101

【讨论】:

  • 你好,这几乎是对的,问题是如果我有多种语法,比如:回家[如果你有 {a-home} 或没有] [或 {a-home} ] [ AND { a-home} or not][or yes, you do have] ,它必须找到所有符合该规则的规则,目前它只找到 1 包含它们。
  • 要实现这一点,您可能想要这样的东西:\[.*?{.+?}.*?\] 只需对 OP 进行小修改,以阻止 .*.+ 贪婪
  • @Kyle 即使这样对[h][e{ll}o] 也无济于事。这应该使用否定字符类来解决。
  • @PepeleaRazvanIonut 现在试试吧,感谢 Kyle 和 Sebastian。
  • 非常感谢,实际上,我对它没有任何问题,因为它完全符合它应该做的事情,希望我永远不会有上面提到的示例来破坏代码,尽管字符串用户输入搜索的位置,并且随时可能出现错误。
猜你喜欢
  • 2014-03-23
  • 1970-01-01
  • 2011-07-22
  • 1970-01-01
  • 2016-04-21
  • 1970-01-01
  • 2020-01-22
  • 2023-04-01
  • 1970-01-01
相关资源
最近更新 更多