1

我正在尝试同时学习 python 和正则表达式,但在查找如何匹配直到字符串结尾并即时进行替换时遇到了一些麻烦。

所以,我有一个这样的字符串:

ss="this_is_my_awesome_string/mysuperid=687y98jhAlsji"

我想要的是首先找到687y98jhAlsji(我事先不知道这个内容),然后将其替换为myreplacedstuff这样:

ss="this_is_my_awesome_string/mysuperid=myreplacedstuff"

理想情况下,我想regex and replace先找到之后的内容mysuperid=(直到字符串结尾),然后执行 a .replaceor.sub如果这有意义。

我将不胜感激这方面的任何指导。

4

2 回答 2

6

你可以试试这个:

 re.sub(r'[^=]+$', 'myreplacedstuff', ss)

这个想法是使用排除分隔符的字符类(此处=)并使用$

解释:

[^=]是一个字符类,表示 字符串末尾不是=
[^=]+一个或多个字符的所有字符
$

由于正则表达式引擎从左到右工作,因此仅=匹配字符串末尾不是 an 的字符。

于 2013-06-10T00:15:15.750 回答
1

您可以使用正则表达式:

>>> import re
>>> mymatch = re.search(r'mysuperid=(.*)', ss)
>>> ss.replace(mymatch.group(1), 'replacing_stuff')
'this_is_my_awesome_string/mysuperid=replacing_stuff'

不过,您可能应该使用@Casimir 的答案。它看起来更干净,而且我不擅长正则表达式:p。

于 2013-06-10T00:17:03.390 回答