2013-12-10 2 views
5

모든 숫자에 특정 값을 더하거나 합하는 방법은 무엇입니까? 예를 들어 나의 목표는 100 안에 모든 숫자를 증가시키는 것이지만, 그 달성은 문제가있다. 근본적으로 어쨌든 현재 숫자를 +100으로 합친 것입니다.Notepad ++ 정규 표현식 합계

내가 ""하지만 난 방법을 찾을 수 없습니다 나는 내에서 모든 숫자를 찾을 수 있습니다

<devio1="([0-9]+)" devio2="([0-9]+)" devio3="([0-9]+)" devio4="([0-9]+)"/> 

메모장 ++로이 정규 표현식을 사용하여

<devio1="875" devio2="7779" devio3="5635" devio4="154"/> 
<devio1="765" devio2="74779" devio3="31535" devio4="544"/> 
<devio1="4335" devio2="13" devio3="55635" devio4="1565"/> 

다음 줄이 100을 추가 할 수있다 그들 모두에게. Notepad ++에서 정규 표현식을 사용하여이 작업을 수행 할 수 있습니까?

+1

질문에 대한 답이 아니라 문제에 대한 답변 : Perl 사용을 고려해보십시오. – Peter

+2

정규 표현식은 문자열 조작을위한 것으로 실제 수학에 적합하지 않습니다. –

+0

정규 표현식 만 사용하면이를 달성 할 수 없으므로 콜백이 필요합니다. 메모장 ++ 용 플러그인을 작성하거나 좋아하는 언어를 사용하십시오. – HamZa

답변

0

Regex는 arithmentic을 지원하지 않으며, Notepad ++는 정규식을 넘어서는 계산을 지원하지 않으므로,이 도구를 사용하고 싶다면 붙어 있어야합니다. 물론 Notepad가 아닌 다른 많은 ++ 솔루션이 있으며 그 중 일부는 Math operations in regex에서 논의됩니다.

3

저는 메모장 + +에 익숙하지 않지만 알고리즘은 b가 [0,8]에있는 한 abcd = a * 1000 + b * 100 + c * 10 + d라고 가정합니다. b를 b + 1로 바꿀 수 있습니다. b = 9에 관해서는 b를 0으로 대체하고 a를 a + 1로 대체해야합니다 (a = 9이면 a를 10으로 대체합니다).

는 다음 세 및 4 자리 번호를 말하자면, 다음과 같은 정규 표현식에 적용 할 수있는,이 주목 : 당신은 또한 모든 A = (9)을 고려한다는 것을 주목 ... 등등

\([1-9]+\)0\([0-9]{2}\) -> \1 1\2, 
\([1-9]+\)1\([0,9]{2}\) -> \1 2\2, 
... -> , 
\([1-9]+\)8\([0-9]{2}\) -> \1 9\2, 

과, b = 9 정수 및 더 큰 정수; 이것은 10^x (x> = 2)의 계수가 9와 같은 경우를 다루는 if 문을 사용하여 일종의 반복을 제안합니다. 실제로 이것을 코딩 (또는 수동으로 수행) 할 때, 이것은 순수한 정규식 접근 방식으로 고통 스러울 것입니다.

8

Notepad ++에서 정규 표현식을 단독으로 사용하는 것은 불가능합니다. 불행히도 대체 패턴에서 계산을 수행 할 방법이 없습니다.

그래서 Notepad ++에서 작업을 수행하는 유일한 방법은 Python Script 플러그인을 사용하는 것입니다.

  1. Python Script 플러그인 Plugin Manager에서 또는 official website에서 설치합니다.
  2. Plugins>Python Script>New Script으로 이동하십시오. 새 파일의 파일 이름을 선택합니다 (예 : add_numbers.py) 및 다음 코드를 복사

    def calculate(match): 
        return 'devio%s="%s"' % (match.group(1), str(int(match.group(2))+100)) 
    
    editor.rereplace('devio([0-9])="([0-9]+)"', calculate) 
    
  3. 실행을 Plugins>Python Script>Scripts>add_numbers.py하고 텍스트로 변환됩니다

    <devio1="975" devio2="7879" devio3="5735" devio4="254"/> 
    <devio1="865" devio2="74879" devio3="31635" devio4="644"/> 
    <devio1="4435" devio2="113" devio3="55735" devio4="1665"/> 
    
+0

고마워. 너 진짜 MPV 야! ^^ – Korbi