Я хочу увеличить числа, которые записаны так:
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)