是否可以丢弃正则表达式中的外括号并考虑内部括号?

是否可以丢弃正则表达式中的外括号并考虑内部括号?

我有很多带有括号的模式,我制作了一个正则表达式,其中不考虑括号而仅考虑它们内部/之间的内容,但是当括号内的文本也包含 [] 括号时存在问题。

谢谢!

正则表达式:(?<inside_value>(?<=\[).*?\[?(?=\]))

例如,

A)   [ClusterReceiver[99]            ]
B)   [first-second-third-8050-exec-a       ]

从上面看,B) 工作正常,但 A) 不工作

每个案例返回的内容(不带引号):

B) "first-second-third-8050-exec-a "
A) "ClusterReceiver[99"

想要什么?

B) "first-second-third-8050-exec-a "
A) "ClusterReceiver[99]"

问题是[ ]外壳内存在支架外壳[ ]

最糟糕的情况是,当存在像 A) 这样的问题时,您能否帮助我提出如何接受至少 1 个括号的建议,以便获得 A) 所需的“ClusterReceiver[99]”?

答案1

使用pcregrep

$ pcregrep -o1 -o2 '([^[]*)\[([^]]*[[:alnum:]]][^]]*).*' input_file
A)   ClusterReceiver[99]
B)   first-second-third-8050-exec-a

相关内容