반응형
정규식 단어 일치
가수, 작사가 추출을 위해 정규식을 만들려고합니다. 작사가 검색을 선택적으로 만드는 방법이 궁금합니다.
여러 줄 노드 샘플 :
Fireworks Singer: Katy Perry
Vogue Singers: Madonna, Karen Lyricist: Madonna
정규식 : /Singers?:(.\*)\s?Lyricists?:(.\*)/
이 두 번째 줄과 정확하게 일치하고 추출 Singers(Madonna, Karen)
하고Lyricists(Madonna)
하지만 작사가가없는 첫 번째 줄 작동하지 않습니다.
작사가 검색을 만들려면 어떻게해야합니까?
비 캡처 그룹에서 일치시킬 부분을 묶을 수 있습니다 (?:)
.. 그런 다음 정규식에서 one-단위로 처리 할 수 있으며 이후에 추가하여 ?
선택 사항으로 만들 수 있습니다. 예 :
/Singers?:(.*)\s?(?:Lyricists?:(.*))?/
여기서는 모든 캐릭터를 탐욕스럽게 먹기
\s?
때문에 쓸모 .*
가 정비 역 추적이 필요하지 않습니다. 또한 이것은 (?:Lyricists?:(.*))
동일한 이유로 부품이 일치 여부하지 않음을 의미합니다 . 욕심이없는 버전의 .*
와 .*?
함께이 $
문제를 해결할 수 있습니다.
/Singers?:(.*?)\s*(?:Lyricists?:(.*))?$/
일부 추가 공백이 배치됩니다. 이 또한 제거되어 다음과 같은 최종 정규식을 제공 할 수 있습니다.
/Singers?:\s*(.*?)\s*(?:Lyricists?:\s*(.*))?$/
Cameron의 솔루션에 추가하기 위해. 소스 코드에 Singers와 Lyricists가 모두 포함 된 여러 줄이있는 경우 '$'가 줄 끝과 일치하도록 'm'다중 줄 수정 튼 추가해야 것입니다. (사용중인 언어를 말하지 않을 수 있습니다. 'i'수정 자도 추가 할 수 있습니다.)
참고 URL : https://stackoverflow.com/questions/5254804/regex-optional-word-match
반응형
'ProgramingTip' 카테고리의 다른 글
Flutter에서 반경이있는 둥근 버튼 / 버튼 만들기 (0) | 2020.12.02 |
---|---|
Swift 3의 배열에서 객체 제거 (0) | 2020.12.02 |
자바 커스텀 생성 화 (0) | 2020.12.01 |
점 ( ".") 연산자와 화살표 ( "->") 연산자는 C와 Objective-C에서 사용됩니다. (0) | 2020.12.01 |
Permgen 크기를 선택 설정해야합니까? (0) | 2020.12.01 |