¿Cómo incrementar todos los números del texto que tienen espacio al menos en un lado?

¿Cómo incrementar todos los números del texto que tienen espacio al menos en un lado?

Quiero incrementar los números que están escritos así: add(1 )o add( 1), pero no así add(1). Tengo un código que funciona en Notepad++ con el complemento Python Script pero incrementa todos los números:

import re

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

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

Además, sería muy bueno saber cómo incrementar números en solo add(1 ), solo add( 1), solo add(1)casos. Puedes sugerirme cualquier software, no particularmente Notepad++.

Respuesta1

Cambie el guión a:

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

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

Explicación de expresiones regulares:

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

Con una entrada como:

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

dará:

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

información relacionada