Como incrementar todos os números do texto que possuem espaço pelo menos de um lado?

Como incrementar todos os números do texto que possuem espaço pelo menos de um lado?

Quero incrementar números escritos assim: add(1 )or add( 1), mas não assim add(1). Eu tenho um código que funciona no Notepad++ com plugin Python Script, mas incrementa todos os números:

import re

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

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

Além disso, seria muito bom saber como incrementar números apenas add(1 ), somente add( 1), somente add(1)casos. Você pode me sugerir qualquer software, não particularmente o Notepad++.

Responder1

Mude o script para:

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

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

Explicação Regex:

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

Com uma entrada como:

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

isso dará:

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

informação relacionada