다음 정규 표현식이 있습니다:
으아악다음 단어와 일치합니다:
으아악하지만 다음 단어는 아닙니다:
으아악이 정규식은 순서에 상관없이 3단어(WORD1
、WORD2
、WORD3
)가 포함된 문자열을 찾을 때 일치합니다.
더 많은 단어로 동일한 작업을 수행하고 싶지만 문제는 단어 수에 따라 정규식의 크기가 기하급수적으로 증가한다는 것입니다. 이 문제를 해결하기 위해(크기가 기하급수적으로 증가하지 않고) 이 정규식을 구성하는 방식을 단순화할 수 있습니까?
P粉6638838622024-02-27 16:51:16
모든 문자열을 반복하고 모든 키워드를 포함하지 않는 모든 문자열을 필터링하면 됩니다.
(더 간결한 버전은 아래 코드 조각에서 찾을 수 있습니다)
으아악해 보세요:
P粉9981006482024-02-27 11:50:29
각 단어에 대해 긍정적인 예측을 사용할 수 있습니다.
으아악 아래의 보다 성능이 뛰어난 버전은 시작 앵커를 지정하고 미리보기를 확인한 후 단일 문자만 일치시킵니다. OP의 요청에 따라 이 기술은 matching
,而不适用于extraction
에서만 작동합니다.
정방향 예측은 게이트와 같습니다. 괄호 안에 지정된 일치 항목이 존재하는 경우에만 계속되지만 일치하는 항목을 소비하거나 캡처하지 않습니다. 길이는 항상 0입니다. 각 단어 앞에 .*
가 있는지 확인하기 위해 "미리 살펴보는" 경우 단어의 순서는 중요하지 않습니다. 각 단어가 참이면 매칭을 위해 아무 것도 사용하지 않고 진행합니다. p>
내용이 일치하는지에만 관심이 있다면 두 표현의 유일한 실질적인 차이점은 걸리는 시간입니다. 콘텐츠에 필수 단어 3개 중 2개만 있다고 가정해 보겠습니다. 표현을 해석하는 소프트웨어가 시도가 쓸모없다는 것을 인식하지 못하는 한, 첫 번째 위치에서 "실패" 세 단어를 찾은 다음 두 번째 위치에서 "실패"를 시도하는 방식으로 마지막 위치에 도달할 때까지 계속됩니다. 위로. ^
,只会在第一个位置进行检查,节省了其他不必要检查的时间。当您只是寻找内容中是否存在所有单词的真/假答案时,从末尾删除 *
를 지정하면 일부 불필요한 캡처를 방지할 수 있습니다.