Как увеличить все числа в тексте, у которых есть пробел хотя бы с одной стороны?

Как увеличить все числа в тексте, у которых есть пробел хотя бы с одной стороны?

Я хочу увеличить числа, которые записаны так: add(1 )или add( 1), но не так add(1). У меня есть один код, который работает в Notepad++ с плагином Python Script, но он увеличивает все числа:

import re

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

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

Также было бы очень хорошо знать, как увеличивать числа в только add(1 ), только add( 1), только add(1)случаях. Вы можете порекомендовать мне любую программу, не особенно Notepad++.

решение1

Измените скрипт на:

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

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

Объяснение регулярного выражения:

(                   # 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

С такими входными данными:

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

это даст:

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

Связанный контент