EOF와 일치하는 정규식
다음과 같은 데이터가 있습니다.
john, dave, chris
rick, sam, bob
joe, milt, paul
이 정규식을 사용하여 이름을 일치시킵니다.
/(\w.+?)(\r\n|\n|,)/
이는 대부분의 작동하지만 파일의 끝이 갑자기 마지막 값을 의미하는 마지막 단어에서 끝나지 않는다 후 \r\n
, \n
또는 ,
이 EOF로 끝납니다. 두 번째 그룹에 바로 넣을 수 있도록 정규식에서 EOF를 일치시키는 방법이 있습니까?
이 질문에 대한 대답은 \Z
그것을 알아내는 데 시간이 걸리지 만 지금은 작동합니다. 반대로, \A
전체 문자열 의 시작 ^
과 $
일치합니다 (한 줄의 시작 과 반대로 일치 함).
EOF는 실제로 문자가 아닙니다. 여러 줄 문자열이있는 경우 '$'는 문자열 끝과 줄 끝과 일치합니다.
펄과 그 형제에서 \A
와 \Z
완전히 행 구분을 무시하고 문자열의 시작과 끝을 일치합니다.
POSIX의 정규 표현식에 사용하는 GNU 확장 \`
과 \'
같은 것들에 대한.
Visual Studio에서 다음과 같이 EOF를 찾을 수 있습니다 $(?![\r\n])
.. 이것은 줄 끝이 CR, CRLF 또는 LF인지 여부에 관계없이 작동합니다.
보너스로 모든 코드 파일에 다음과 같은 최종 줄 바꿈 마커가 있는지 확인할 수 있습니다.
Find What: (?<![\r\n])$(?![\r\n])
Replace With: \r\n
Use Regular Expressions: checked
Look at these file types: *.cs, *.cshtml, *.js
작동 원리 :
CR 또는 LF가 앞에 나오지 않고 CR 또는 LF가 뒤 따르지 않는 행 끝 (폭이 0 인 일치)을 찾으십시오. 이것이 작동하는 이유를 보여줄 생각이 있습니다!
CR, LF 또는 CRLF 등 원하는 줄 끝 문자로 바꿔야합니다.
Ryan이 제안한 \ Z의 동작을 \ z와 대조하십시오.
$ perl -we 'my $ corpus = "안녕하세요 \ n"; $ corpus = ~ s / \ Z / world / g; print ( ": $ corpus : \ n") ' : helloworld 세계: $ perl -we 'my $ corpus = "안녕하세요 \ n"; $ corpus = ~ s / \ z / world / g; print ( ": $ corpus : \ n") ' :여보세요 세계: $
Perlre sez :
\ Z 문자열의 끝 또는 끝의 개행 이전에만 일치 \ z 문자열의 끝에서만 일치
테스트 케이스를 Ruby (1.8.7, 1.9.2)로 변환하는 것은 동일하게 작동합니다.
정말 줄 구분 기호를 캡처해야합니까? 그렇지 않은 경우이 정규식 만 있으면됩니다.
/\w+/
일치하려는 모든 하위 문자열이 예제와 같이 전적으로 단어 문자로 구성되어 있다고 가정합니다.
(\ r \ n | \ n) 대신 $ (EOL / EOF)를 시도 하시겠습니까?
/\"(.+?)\".+?(\w.+?)$/
문자열을 전체로 처리하기 위해 적절한 수식어를 사용하고 있다고 가정하면 (줄 단위가 아니라 \ n이 작동하는 경우 사용하고 있음) 다른 대안을 추가하십시오. 문자열 끝 : (\ r \ n | \ n |, | $)
최근에 나는 이와 같은 것을 찾고 있었지만 JavaScript를 찾고 있었다.
여기에두면 같은 문제가있는 사람은 누구나 혜택을받을 수 있습니다.
var matchEndOfInput = /$(?![\r\n])/gm;
기본적으로 이것은 캐리지 리턴이나 줄 바꾸기 문자가 뒤 따르지 않는 줄의 끝과 일치합니다. 본질적으로 이것은 \Z
JavaScript 와 동일 합니다.
/(\w.+?)(\r\n|\n|,|$)/
참고 URL : https://stackoverflow.com/questions/1171284/regex-to-match-eof
'your programing' 카테고리의 다른 글
스위트에서 하나의 테스트 만 실행하려면 어떻게해야합니까? (0) | 2020.10.11 |
---|---|
Python 해시 가능 사전 (0) | 2020.10.11 |
비동기 셸 명령 (0) | 2020.10.11 |
Windows는 JAVA_HOME을 무시합니다. JDK를 기본값으로 설정하는 방법은 무엇입니까? (0) | 2020.10.11 |
Android Manifest 애플리케이션에 둘 이상의`tools : replace`를 추가하는 방법은 무엇입니까? (0) | 2020.10.11 |