괄호로 묶인 문자 집합으로 구성된 정규 표현식을 호출합니다.캐릭터 클래스;포함된 문자와 일치합니다. 예를 들어 , , 또는
[AEIOU]
문자를 일치 시킵니다 .A
E
I
O
U
하이픈을 사용하여 문자 클래스 내의 문자 범위를 축약할 수 있습니다. 하이픈 바로 왼쪽에 있는 문자는 범위의 시작을 정의하고 바로 오른쪽에 있는 문자는 끝을 정의합니다. 따라서
[0-9]
임의의 숫자와 일치하며[a-zA-Z][0-9]
문자 뒤에 숫자가 오는 것과 일치합니다. 왼쪽 및 오른쪽 피연산자가 없는 경우 문자 클래스의 하이픈은 자체를 나타내므로 문자 클래스 합계는 a 또는 a 와[+-]
일치합니다 . 문자 클래스는 하이픈이 포함된 단어와 일치합니다.[-+]
+
-
[A-Za-z-]+
[+-]
이들그리고 그리고 의 차이점은 무엇인가요 [-+]
? 제가 보기에도 똑같은 일을 하고 있는 것 같습니다. 무엇을 해야 합니까 [A-Za-z-]+
?
$ awk '/[Y-Zy-z-]/' countries
India 1267 746 -Asia
$ awk '/[Y-Zy-z-]+/' countries
India 1267 746 -Asia
U 8649 275 Asia
Canada 3852 25 North America
China 3705 1032 Asia
USA 3615 237 North America
India 1267 746 -Asia
Mexico 762 78 North America
France 211 55 Europe
Japan 144 120 Asia
England 94 56 Europe
아니면 내가 해봤어
awk '/[^-]/' countries
나는 어떤 결과도 기대하지 않습니다.
$ awk '/[^-]/ countries
U 8649 275 Asia
Canada 3852 25 North America
China 3705 1032 Asia
USA 3615 237 North America
India 1267 746 -Asia
Mexico 762 78 North America
France 211 55 Europe
Japan 144 120 Asia
England 94 56 Europe
답변1
텍스트에는 -
괄호 안에 있는 표현식의 대시 와 일치하려면 [...]
대시가 의 첫 번째 또는 마지막에 나타나야 합니다 (또는 대시가 아닌 단일 문자가 일치 하는 경우 [...]
첫 번째 문자 바로 뒤에 나타나야 함 ).^
[^-]
[+-]
사이에는 차이가 없습니다 [-+]
. 둘 다 a +
또는 a와 일치합니다 -
.
이 표현식은 에서 까지 여러 개의( 다음 으로 인해 0보다 큼 ) ASCII 문자와 [A-Za-z-]+
일치합니다 .+
[...]
A
Z
a
z
그리고 대시. 에 표시된 대로 대시를 앞에 배치할 수도 있습니다 [-A-Za-z]+
.
이 표현식에서 안쪽 두 개의 대시는 다음을 의미합니다.범위마지막 대시(또는 첫 번째 대시 [-A-Za-z]+
)는 다음을 의미합니다.문자 그대로의 대시 문자.
after는 일치하도록 +
표현식 을 수정합니다 . 그렇지 않은 경우 표현식은 선택적 대시가 있는 단어가 아닌 정확히 한 문자와 일치합니다.[...]
[...]
+
두 번째 스크린샷은 [Y-Zy-z-]
일치하는 [Y-Zy-z-]+
일부 데이터를 보여줍니다.
두 모드 모두에서 동일한 결과를 얻습니다. 이는 set 에서 하나 이상의 문자를 포함하는 유일한 줄이기 때문입니다 YZyz-
. 일치하는 문자는 -
하위 문자열의 문자 입니다 -Asia
.
그런 다음 이 일치를 사용하려고 합니다 [^-]
.모두왜냐하면 모든 행에는 -
.