2016-06-17 2 views
-1

난이이 텍스트체인 정규식 (notepad ++)에서이 식을 어떻게 바꿀 수 있습니까?

(14)이 25 세 12 사 (40) 5 ~ 10

내가 "(14)이 14 일 25 세 14 25 12 사 14 25 12 40 오 14 25 12 40 10"

을 가져올

예를 들어, 14 초 후에 (14 14 2) (14 2)를 교체하면 2시 이후에 시작할 수 없습니다.

할 수있는 다른 방법이 있습니까? 예를 들어 일치 항목 (일치하기 전에 그룹)에 포함되지 않은 그룹을 사용하여 바꾸시겠습니까?

답변

0

이 당신을 위해 트릭을해야 도와주세요 :

정규식 : ((?:\s?\d+\s?)+)((?:[a-zA-Z](?![^a-zA-Z]+\1))+)

교체 : $1$2 $1

당신은 "클릭해야됩니다 바꾸려면 모두 "버튼을 눌러야합니다 (d 한 번에 한 번은 매치를 찾을 수있는 한 반복해야합니다. Online PHP example)

enter image description here

설명 :

  • \s는 : 하나의 공백 문자
  • ?을 일치 : 이전 표현은 0 또는 1 시간을 일치해야합니다.
  • \s? : 공백 문자를 0 번 또는 1 번 일치시킵니다.
  • \d : 숫자 문자를 일치시킵니다 ([0-9]에 해당).
  • + : 이전 표현식은 적어도 한 번 이상 일치해야합니다 (u부터 무한대까지).
  • \d+ : 한 자리 숫자 이상 일치시킵니다 (한 번 이상).
  • () : 캡처 그룹
  • (?:) : 비 캡처 그룹
  • ((?:\s?\d+\s?)+) : 옵션 공백 문자 다음에 하나 개 이상의 숫자 문자 뒤에 선택적 공백 문자를 일치시킵니다. 표현식은 포착되지 않은 그룹과 그 다음에 더하기로 둘러싸여 있습니다. 즉, 정규 표현식은 가능한 한 많은 공백 문자와 숫자 조합을 일치 시키려고합니다 (그래서 '14 25 12 40 '과 같은 것으로 끝날 수 있습니다).

캡쳐 그룹은 대체에서 값을 다시 사용하도록 값을 유지합니다. 캡처 그룹이없는 캡처 그룹의 끝에는 마지막 숫자 만 기억하기 때문에 +를 간단히 추가 할 수 없습니다 캡처 ('14 25 12 '전체를 대신하여'12 '를 사용하여 '14 25 12 40'을 빌드하는 데 사용).

  • [a-zA-Z] : 어떤 경우에도 영문자와 일치해야합니다 (하단, 상단).
  • \1 : 첫 번째 그룹에서 캡처 된 것을 참조하십시오.
  • (?!) : 부정적 선견자.
  • [^]은 : 음의 문자 클래스, 그래서 [^a-zA-Z] 아무것도
  • ((?:[a-zA-Z](?![^a-zA-Z]+\1))+) 일치 의미 부정적인 내다보기는 우리가 항상 첫 번째 "14 개의"입력 텍스트에 일치 결국하지 있는지 확인하기위한 것입니다. 그것 없이는 우리는 "14 14 14 14 14 14 14 25 3 12 4 40 5 10"과 같은 결과를주는 무한 루프로 끝날 것입니다 (타임 아웃에 도달 할 때까지 "14"가 반복되기 전에 "25"가 반복됩니다).

기본적으로 일치하는 모든 영어 문자에 대해 첫 번째 캡처 그룹 (예 : "14")의 콘텐츠가 우리 자릿수 시퀀스에 존재하지 않는다고 주장합니다.

대체 할 경우 $1$2 $1은 캡처 그룹 1과 2의 내용을 넣고 공백을 추가하고 캡처 그룹 1의 내용을 한 번 더 넣는 것을 의미합니다.

귀하의 기대에 부합한다면, 내 대답을 수락하는 것을 잊지 마십시오.