2017-11-03 2 views
2

메모장 ++에서 그룹의-그룹 정규식을 대체하는 방법 :나는이 같은 일부 텍스트가

1|Some things|US|192||||||1|| 
2|Some other things|US|128|3|||5|1|1|3| 
3|Whatever else|US|128||15|||||| 

그리고 내가 좋아하는 뭔가 ++ 메모장에서 교체 싶습니다

1|Some things|US|192|+++++1++ 
2|Some other things|US|128|3+++5+1+1+3+ 
3|Whatever else|US|128|+15++++++ 

그러나 나는 그것을 할 수있는 적절한 방법을 찾지 못했습니다. 나는 문자열과 일치하는 RegExp를 만들 수 있었다 : US\|(\d+)\|((\d*)\|)+하지만이 그룹 - 그룹 접근법과 일치하는 대체 문자열을 만드는 방법을 찾을 수 없었다.

나를위한 어려운 부분은 "미국"다음의 첫 번째 숫자를 제외하고있었습니다. 내가 볼 수있는 유일한 방법은 +(?<![a-zA-Z])\|(?![a-zA-Z])으로 바꾸고 US\|(\d+)\+US|\1|으로 다시 바꾸는 것입니다.

메모장 ++의 기본 제공 또는 TextFX의 대체 도구로 대체 할 수 있습니까? 대체 문자열로 +으로

(?:\G(?!^)|\|US\|\d+\|)\d*\K\| 

:

답변

4

당신은이 패턴을 사용할 수 있습니다. 각 라인 시나리오

은 동일하다 :

  • 제 일치 교대의 제 2 분 사용 \|US\|\d+\|
  • 다른 경기의 \G 앵커 제 분기를 사용하여 제 1 파이프를 일치 인접성을 보장합니다.
  • 마지막 파이프에 도달하면 인접성이 깨지고 첫 번째 분기가 더 이상 성공할 수 없습니다.

\K 기능은 일치 결과에서 이전에 일치하는 모든 문자를 제거하고 파이프 만 교체합니다.

+0

이것은 내 마음을 비틀고 있지만 작동합니다! 설명 주셔서 감사합니다! 나는'\ G'와'\ K'를 몰랐다. –