【发布时间】:2016-05-31 12:15:57
【问题描述】:
如果我想在大括号外找到 TEST、BEST、FEST 等词,我会使用以下正则表达式:
^(?:[^\{]*(?:\{.*\})*)(?:(?:[^\{]*(TEST|BEST|FEST))|(?:.*(TEST|BEST|FEST)(?!\})))
见https://regex101.com/r/vB2fS0/1
但是如果我想在复杂的括号之外找到这些词,例如在 {[ something } 之外,该怎么办。注意 {[ 而不仅仅是 {。 例子:
- {[TEST} - 有效,因此不匹配
- {[} {[BEST} - 有效,因此不匹配
- bla {[} {[FEST} - 有效,因此不匹配
- TEST - 无效,因为它的外部复杂括号因此应该匹配
- {[} {[FEST - 无效,因此应该匹配
- bla {[} hi {[} TEST} {[} - 无效,因此应该匹配
问题是使用 1 个字符 { 我可以轻松地使用 [^\{]* 来排除它。如何使用多个字符(即一个单词)来做到这一点:{[
【问题讨论】:
-
匹配并捕获您需要的内容,只匹配您不需要的内容。获取第 1 组的值。