![메모장++/정규 표현식은 시작은 같고 끝은 다른 줄을 찾습니다.](https://rvso.com/image/1304074/%EB%A9%94%EB%AA%A8%EC%9E%A5%2B%2B%2F%EC%A0%95%EA%B7%9C%20%ED%91%9C%ED%98%84%EC%8B%9D%EC%9D%80%20%EC%8B%9C%EC%9E%91%EC%9D%80%20%EA%B0%99%EA%B3%A0%20%EB%81%9D%EC%9D%80%20%EB%8B%A4%EB%A5%B8%20%EC%A4%84%EC%9D%84%20%EC%B0%BE%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
그래서 조금 읽어본 결과 NotePad++가 "일반적인" 정규식을 사용하지 않는다는 사실을 발견했습니다(그냥 SciTE로 돌아갈 생각이 들기 시작했습니다). 제 질문은 다음과 같습니다.
주소록으로 가져오기 위해 정리하고 좋은 CSV로 변환하려고 하는 일부 중복 데이터가 포함된 내보낸 데이터 목록이 있습니다(팩스 서버 솔루션 마이그레이션, 이전 솔루션은 OOOOLD이므로 이것이 최고입니다). 수출용으로 구할 수 있습니다.)
각 항목 그룹에서 제거하려는 줄은 항상 시작됩니다.
항목: 이름 ~
그리고 그 뒤에는 각 항목 그룹에 고유한 12자리 영숫자(16진수로 나타남) 코드가 있습니다. 몇몇 항목 그룹의 경우 "NAME" 뒤에 사람이 읽을 수 있는 항목이 있지만 수동으로 제거할 수 있을 만큼 적으므로 일치시키는 것은 큰 일이 아닙니다.
그래서 제가 하고 싶은 것은 Entry:로 시작하는 모든 줄을 찾아서 줄 끝까지 선택하는 것입니다. 각 그룹의 각 항목은 별도의 줄에 있습니다. 그런 다음 찾기 및 바꾸기를 사용하여 목록에서 이 줄을 제거하겠습니다.
업데이트: 입력 및 출력
Entry: NAME ~00003193820
ShortName: ~00003193820
Owner: USRENAME
Name: John
FamilyName: John
DearName: John
Organisation: Acme 1 Corp
Via: FAX-ANY 1(555) 123-4567
Entry: NAME ~00003193820
ShortName: ~00003193820
Owner: USRENAME
Name: Sam
FamilyName: Sam
DearName: Sam
Organisation: Acme 2 LLC
Via: FAX-ANY 1(555) 890-1234
여기에 두 개의 항목 그룹이 있습니다. 각 그룹에서 "Entry:"로 시작하는 줄을 제거하고 싶습니다.
답변1
또 다른 옵션은
^Entry: NAME .*
Entry: NAME
다음으로 시작하는 줄 과 그 이후의 줄을 찾습니다 .
답변2
사용
^Entry: NAME ~\d+$
검색 패턴이 요청한 대로 작동하는 것 같습니다.
저는 개인적으로 보다 일반적인 자리 표시자 대신 자리 표시자( ~ \d
범위의 단일 숫자와 일치 ) 를 사용하여 일치시키는 것을 권장합니다 . 실제로 다음과 같이 해야 합니다.0
9
.
^Entry: NAME ~\d{12}$
당신이 기대하는 것을 지정하기 위해정확히연속으로 12자리입니다. 이렇게 하면 항목에 예상하지 못한 내용이 포함된 경우 실수로 해당 항목을 바꾸는 일이 발생하지 않습니다.
문자열이 16진수 표기법인 것으로 판명되면 다음을 사용할 수 있습니다.
^Entry: NAME ~[0-9a-fA-F]{12}$
마지막 2개의 예제가 Notepad++에서 제대로 작동하는지 확인하지 않았지만 제가 아는 한 그것은 모두 매우 기본적인 구문입니다.