저는 Notepad++를 사용하고 있는데 같은 줄에서 여러 값을 검색할 수 있는 방법을 찾으려고 합니다. 값이 어떤 순서로 되어 있는지 알 수 없기 때문에 현재 정규식 검색이 작동하지 않습니다.
예를 들어, 세 가지 특정 값이 있는 코드 줄을 검색하고 싶습니다. .*
값의 순서를 알아야 하므로 정규식 검색에 사용하면 작동하지 않습니다. 값의 순서를 모르고 이러한 행을 검색할 수 있습니까?
각 줄에는 아마도 30개의 서로 다른 태그가 있는 거래 로그가 있을 것입니다. 을(를) 검색하고 싶습니다 35=D, EUR/USD, 150=8
. 세 가지 값이 모두 존재하는 항목만 검색하고 싶습니다.
제가 직면한 문제는 이러한 태그의 순서가 보장되지 않기 때문에 아래에서 사용하는 정규식 검색이 필요한 각 항목을 항상 찾지 못한다는 것입니다.
35=D.*EUR/USD.*150=8
답변1
사용미리보기훨씬 더 효율적이며 복잡성을 증가시키지 않고도 여러 가지 교대를 처리할 수 있습니다.
- Ctrl+F
- "무엇을 찾다":
^(?=.*\b35=D\b)(?=.*\bEUR/USD\b)(?=.*\b150=8\b).+$
- 확인하다"성냥갑"
- 확인하다"줄 바꿈"
- 확인하다"정규 표현식"
- 선택 취소 "
.
개행 문자와 일치" - Find All in Current Document
설명:
^ # Beginning of line
(?= # Start positive lookaead, make sure we have after:
.* # 0 or more any character but newline
\b # Word boundary to be sure not matching 135=DATA
35=D # Literally
\b # word boundary
) # End lookahead
(?= # Start positive lookaead, make sure we have after:
.* # 0 or more any character but newline
\b # Word boundary
EUR/USD # Literally
\b # Word boundary
) # End lookahead
(?= # Start positive lookaead, make sure we have after:
.* # 0 or more any character but newline
\b # Word boundary
150=8 # Literally
\b # Word boundary
) # End lookahead
.+ # One or more any character but newline
$ # End of line
화면 캡처:
답변2
세 문자열이 모두 존재하는 줄만 일치시키려면 대체 |
연산자를 사용하고 (...)
패턴을 그룹화하여 가능한 모든 순열에 대한 정규식을 작성할 수 있습니다.
(35=D.*EUR/USD.*150=8)|(35=D.*150=8.*EUR/USD)|(EUR/USD.*150=8.*35=D)|(EUR/USD.*35=D.*150=8)|(150=8.*35=D.*EUR/USD)|(150=8.*EUR/USD.*35=D)
줄 바꿈이 추가된 읽을 수 있는 버전:
(35=D.*EUR/USD.*150=8)|
(35=D.*150=8.*EUR/USD)|
(EUR/USD.*150=8.*35=D)|
(EUR/USD.*35=D.*150=8)|
(150=8.*35=D.*EUR/USD)|
(150=8.*EUR/USD.*35=D)
35=D
이는 , EUR/USD
및 150=8
(및 그 사이에 가능한 텍스트) 의 조합이 있는 모든 행과 일치합니다 . 이 샘플 텍스트에서는 마지막 세 줄만 일치 항목을 갖습니다("현재 문서에서 모두 찾기" 버튼).
some text 35=D
some text EUR/USD more text 150=8
some text 35=D more text EUR/USD more text 150=8
some text EUR/USD more text 35=D more text 150=8 more text
some text 150=8 more text EUR/USD 35=D more text