Overview : 특정문자 제외해서 찾기
1.앞문장이 공백~2 까지 이고, 뒤에서 .(모든단에서조사하여) cream|candy 없는 문장
Regular expression
1 2 3 4 5 6 7 8 |
^\s{0,2}((?!cream|candy).)*$ i like ice cream i like candy i like chocolate i have no money |
Result
1 2 3 4 |
i like chocolate i have no money |
2.앞단어가 공백~2 까지이고, 조건에 맞는 그룹(1)에 맞으면 맨뒤 단어가 cream, 아니면 candy 인 문장
Regular expression
1 2 3 4 5 6 7 8 9 10 |
^(\s{0,2}i)?.*(?(1)cream|candy)$ i like ice cream i like candy i like chocolate i have no money => i like candy d |
3. 조건 단어가 있으면 특정단어또는 문장 찾기 / 없으면 다른 문장 찾기
Regular expression
1 2 3 4 5 6 7 8 9 10 11 12 13 |
(?(?=.*choco)(?:i like.*)|(?:i have no money)) i have ice cream i have candy i like chocolate i have no money i love chocolate =>i like chocolate i have no money |
4. CHANGES CANCELLATIONS 이전 문장 개수
Regular expression
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
^\s{0,2}[A-Z](?!HANGES|ANCEL).* UNLESS OTHERWISE SPECIFIED APPLIES CANCELLATIONS BEFORE DEPARTURE CHANGES ANY TIME FOR TICKETING ON/AFTER 01JAN 19 CHANGES/CANCELLATIONS ANY TIME =>UNLESS OTHERWISE SPECIFIED APPLIES FOR TICKETING ON/AFTER 01JAN 19 |
CHARGE라는 단어를 찾되, 끝에 ‘S’가 붙지 않은 경우
단어 경계(\b
)를 사용하고 ‘S’가 없는 조건을 명시해야 합니다. 이를 위해 look-ahead assertion을 사용할 수 있습니다.
정규식은 다음과 같이 작성할 수 있습니다:
1 2 3 |
\bCHARGE(?!\S)\b |
여기서 \b
는 단어의 시작과 끝을 나타냅니다. CHARGE
는 찾고자 하는 단어입니다. (?!\S)
는 바로 뒤에 공백이 아닌 문자가 오지 않아야 함을 의미하는 negative look-ahead assertion입니다. 이는 ‘S’가 바로 뒤에 오지 않아야 한다는 조건을 만족시키는 방법 중 하나입니다. 마지막 \b
는 단어의 끝을 나타냅니다.
단, 이 정규식은 “CHARGE” 뒤에 공백이나 문자열의 끝이 오는 경우에만 일치합니다. 만약 “CHARGE” 뒤에 다른 문자가 오는 경우도 포함하고 싶지만 ‘S’는 제외하고 싶다면, 정규식을 조금 더 조정할 필요가 있을 수 있습니다.