답변:
대괄호 표현식 에서 리터럴 ]과 리터럴을 일치 시키려면 다음과 같이 사용해야합니다.-
[^]/\^:-]
또는 일부 도구는 백 슬래시를 이스케이프 처리해야 하므로 더 좋습니다 .
[^]/\\^:-]
즉
, 오른쪽 대괄호 ( ']')는 목록에서 처음 (초기 '^'후)이 발생하면 특수한 의미를 잃고 대괄호 표현식으로 표시
되며
하이픈 빼기 문자는 처음 발생하면 그 자체로 처리 (후있는 경우, '^'초기) 목록 또는 최근
따라서
브래킷 발현 모두 지정하는 경우 - 후 (그리고 ']'는 ']가'먼저 배치한다 ' '^'(있는 경우) 및 '-'는 대괄호 표현식 내에서 마지막입니다.
대괄호 식의 규칙은 ERE 및 BRE 와 동일합니다 .
[^-]](이 하나가 실패)?
^이후 ]지금 [^-]]에도 모두있는 경우 작동하지 않을 것입니다 ^및 ](처럼 문자 그대로 치료를 받았다 [b-a]). 어쨌든 예 ;를 들어 닫는 대괄호 와 일치 시키려면 이전 문자까지의 범위 ](백 슬래시) ]를 사용하고 대괄호 표현식에서 첫 번째 문자로 포함하십시오 (예 :) [];-\\].
[[.^.]-[.-.]]? 이것이 효과가 있다고 생각합니다. 의 ASCII 코드 ^가 이전 이라고 가정합시다 -.
[^[.].][.-.]/\^:]
이상하게도 특정 장소에 몇 명의 캐릭터가 있어야합니다. 당신은 있어야합니다 ]세트에서 첫 번째 문자로, 그리고 -세트의 마지막 문자 여야합니다.
요구 사항을 충족하는 RE는 다음과 같습니다. [^]\^/-]:
echo 'Hello[world]-[sun] ^^ 4/5 or 3\4' | grep -Eo '[^]\^/-]' | xargs
H e l l o [ w o r l d [ s u n 4 5 o r 3 4
[캐릭터는 거기에 속하지 않습니다. OP는 제외하고 싶지 않습니다.
awk구현과 예perl를 들어 필요합니다.