정규식을 사용하여 특수 문자 일치

정규식을 사용하여 특수 문자 일치

소문자와 숫자가 포함된 것을 찾고 싶다면 쉽습니다.

텍스트 생성 | grep -E '[0-9a-z]'

괄호는 문자 집합을 일치시키는 데 유용하지만 다소 특수한 문자는 어떻습니까?
원하는 경우 대괄호 일치를 사용하세요.어느특징하지만]닫는 괄호 , 대시(또는 하이픈) "-", 슬래시 /, \캐럿 ^, 콜론 중 하나입니다 :.
이렇게 보입니까(이것이 작동하지 않을 것이라는 것을 압니다)?

[^]-/\^:]

답변1

리터럴 ]-리터럴 과 일치합니다.대괄호 표현다음과 같이 사용해야 합니다.

[^]/\^:-]

아니면 더 나은 이유는일부 도구에는 이스케이프 백슬래시가 필요합니다.:

[^]/\\^:-]

그건
오른쪽 대괄호( ']' )가 목록의 첫 번째에 나타나면(머리글자 '^' 뒤에) 특별한 의미를 잃고 대괄호 표현식으로 표현됩니다.
그리고
하이픈 빼기 문자가 목록의 첫 번째(있는 경우 초기 "^" 다음) 또는 마지막에 나타나는 경우 해당 문자 자체로 처리됩니다.
그러므로
대괄호 표현식이 "-"와 "]"를 모두 지정하는 경우 대괄호 표현식에서 "]"를 먼저 배치하고(있는 경우 "^" 다음) "-"를 마지막에 배치해야 합니다.
대괄호 표현식의 규칙은 다음과 같습니다.오히려그리고갈아 바수다.

답변2

아마도 이상하게도 특정 장소에는 여러 캐릭터가 있어야 합니다. 당신은 ]세트의 첫 번째 캐릭터 여야 하며 , -세트의 마지막 캐릭터여야 합니다.

귀하의 요구 사항을 충족하는 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

관련 정보