Соответствие + в regex

Это должно быть легко, но мне удалось озадачить 2 человек до сих пор на работе, и я был в ней больше 3 часов теперь, таким образом, здесь идет.

Я должен заменить + aplus (наряду с несколькими другими случаями) с модулем ре Python. например, "Я передал мой + экзамен". потребности стать "Я сдал свой aplus экзамен".

Просто использование \ba + хорошо работает большую часть времени, но перестало работать в случае a+b, таким образом, я не могу использовать его, это должно соответствовать + как отличное слово. Я попробовал \ba +\b, но это перестало работать, потому что я принимаю +, граница слова.

Я также попробовал \ba +\W, который действительно работает, но является жадным и съедает пространство (или любой другой неальфа-символ, который был бы там).

Какие-либо предложения?

6
задан SilentGhost 8 June 2010 в 13:55
поделиться

3 ответа

Превратите \ W в утверждение.

\ba\+(?=\W)

или, лучше,

\ba\+(?!\w)

, поскольку отрицательное утверждение также позволяет сопоставить a + в конце строки.

8
ответ дан 10 December 2019 в 02:42
поделиться

Вам нужно экранировать +, так как он имеет особое значение в регулярном выражении (один или несколько a). поиск a \ + вместо a +

0
ответ дан 10 December 2019 в 02:42
поделиться
>>> re.sub(r'\ba\+\s', 'aplus ', 'I passed my a+ exam.')
'I passed my aplus exam.'
>>> re.sub(r'\ba\+\s', 'aplus ', 'a+b')
'a+b'
1
ответ дан 10 December 2019 в 02:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: