괄호가 포함된 패턴이 많고 괄호를 고려하지 않고 그 안/사이에 있는 것만 고려하는 정규식을 만들었는데, 괄호 안의 텍스트에도 [] 괄호가 포함되어 있으면 문제가 있습니다.
감사해요!
정규식:(?<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