나는 정규식, 특히 고급 정규식(뒤를 보거나 앞을 보거나)을 처음 사용합니다.
두 줄이 있는데,
- 공이 빨간색 가방에 있거나 녹색 가방에 있으면 공을 선택하세요.
- 공이 녹색 가방에 있거나 빨간색 가방에 있으면 공을 선택하세요.
1번째 '가방' 앞에 줄이 빨간색이어야만 매치를 하고 싶었어요. 그리고 첫 번째 'bag' 다음에 줄이 빨간색이면 일치하지 않습니다(따라서 2가 아닌 1과 일치).
다음 정규식을 사용하면
sort.+?red(?!bag)
또는
sort.+?(?!bag)red
두 경우 모두 여전히 라인 2와 일치하는 것 같습니다.
힌트/답변을 보내 주시면 감사하겠습니다.
답변1
이것은 작업을 수행합니다.
^(?:(?!\bbag\b).)*\bred\b.+?\bbag\b
설명:
^ # beginning of line
# tempered greedy token
(?: # start non capture group
(?! # negative lookahead
\bbag\b # "bag" surrounded with word boundary, not matching bags or airbag
) # end lookahead
. # any character
)* # end group, may appear 0 or more times
\bred\b # "red" surrounded with word boundary, not matching tired or redition
.+? # 1 or more any character, not greedy
\bbag\b # "bag" surrounded with word boundary