正規表現で外部括弧を捨てて内部括弧を考慮することはできますか?

正規表現で外部括弧を捨てて内部括弧を考慮することはできますか?

括弧を含むパターンが多く、括弧を考慮せずにその中/間にあるものだけを考慮する正規表現を作成しましたが、括弧内のテキストにも[]括弧が含まれていると問題があります。

ありがとうございます!

正規表現:(?<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)のような問題があるときに、A)が要求する「ClusterReceiver [99]」を得るために少なくとも1つのブラケットを許可する方法についての提案を手伝ってもらえますか?

ベストアンサー1

使用pcregrep

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

おすすめ記事