Notepad++를 사용하여 순열에서 같은 줄에 있는 여러 값을 어떻게 찾나요?

Notepad++를 사용하여 순열에서 같은 줄에 있는 여러 값을 어떻게 찾나요?

저는 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/USD150=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


스크린샷

관련 정보