在匹配模式时忽略嵌套括号时遇到问题。该文件的某些行具有嵌套括号,但其他行不具有嵌套括号。我想匹配的模式是(a)_b,但是a中有括号。这是我现在的模式:
(\\(([^)]+)\\)_\\{([^}]+)\\})
我知道如果你可以检查匹配器组是否包含括号,你可以忽略它们。但是我认为匹配器组没有包含方法。谢谢。
答案 0 :(得分:2)
您无法使用正则表达式执行此操作。跳过嵌套结构需要计算能力;正则表达式无法计算。
您需要构建跟踪嵌套的内容。正则表达式没有非常复杂的语法;编写一个简单的解析器来跳过它们很容易,计算嵌套的括号。
答案 1 :(得分:0)
要 NOT 匹配包含嵌套的括号嵌套卷曲,请执行以下操作
# "(\\(([^()]+)\\)_\\{([^{}]+)\\})"
(
\(
( [^()]+ )
\)
_
\{
( [^{}]+ )
\}
)
要在两个地方排除这两个,
# "(\\(([^(){}]+)\\)_\\{([^(){}]+)\\})"
(
\(
( [^(){}]+ )
\)
_
\{
( [^(){}]+ )
\}
)