Wie erhöht man alle Zahlen im Text, bei denen mindestens auf einer Seite Platz ist?

Wie erhöht man alle Zahlen im Text, bei denen mindestens auf einer Seite Platz ist?

Ich möchte Zahlen erhöhen, die wie folgt geschrieben sind: add(1 )oder add( 1), aber nicht wie folgt add(1). Ich habe einen Code, der in Notepad++ mit dem Python Script-Plugin funktioniert, aber alle Zahlen erhöht:

import re

def calculate(match):
    return '%s' % (str(int(match.group(1)) + 1))

editor.rereplace('(\d+)', calculate)

Außerdem wäre es sehr gut zu wissen, wie man Zahlen nur in add(1 ), nur add( 1), nur add(1)Fällen erhöht. Sie können mir jede Software vorschlagen, nicht unbedingt Notepad++.

Antwort1

Ändern Sie das Skript in:

import re
import random
def calculate(match):
    return '%s' % (str(int(match.group(1)) + 1))

editor.rereplace('((?<=add\( )\d+(?=\))|(?<=add\()\d+(?= \)))', calculate)

Regex-Erklärung:

(                   # group 1
    (?<=add\( )     # positive lookbehind, make sure we have "add( " (with a space after parenthesis) before
    \d+             # 1 or more digits
    (?=\))          # positive lookahead, make sure we have a closing parenthesis after
  |               # OR
    (?<=add\()      # positive lookbehind, make sure we have "add(" (without spaces after parenthesis) before
    \d+             # 1 or more digits
    (?= \))         # positive lookahead, make sure we have a space and a closing parenthesis after
)                   # end group 1

Mit einer Eingabe wie:

add(1 ) or add( 1), but not like this add(1)

es wird geben:

add(2 ) or add( 2), but not like this add(1)

verwandte Informationen