Python 正则表达式,re.sub,替换模式的多个部分?
我找不到好的资源来解决这个问题……我想做一个简单的替换操作。
我想替换掉其中的 (.*?) 部分,但不知道该怎么写语法……我知道在 PHP 中怎么做,所以我一直在尝试根据那个来写(这就是为什么我用了 $1,但我知道在 Python 中这样写是不对的)。如果有人能告诉我正确的语法,我不想要针对某个特定字符串的细节,只想知道像这样替换的方式,或者如果有多个 () 的地方该怎么处理……谢谢!
originalstring = 'fksf var:asfkj;'
pattern = '.*?var:(.*?);'
replacement_string='$1' + 'test'
replaced = re.sub(re.compile(pattern, re.MULTILINE), replacement_string, originalstring)
3 个回答
-2
Python的文档可以在网上找到,关于re模块的文档在这里:http://docs.python.org/library/re.html
不过来回答你的问题,Python使用\1来表示匹配到的组,而不是用$1。
7
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,不知道该怎么解决。比如,有人可能在使用某个特定的功能时,发现它的表现和预期不一样。这种情况下,了解问题的根源就显得非常重要。
通常,解决问题的第一步是仔细阅读相关的文档或者说明,这样可以帮助我们更好地理解这个功能是如何工作的。如果文档中没有找到答案,可以尝试在网上搜索一下,看看其他人是否遇到过类似的问题,或者在技术论坛上询问。
有时候,问题可能出在代码的某个小细节上,比如拼写错误、参数设置不正确等。因此,仔细检查自己的代码也是很重要的。
总之,遇到问题时,不要急于放弃,耐心寻找解决方案,通常都能找到答案。
>>> import re
>>> regex = re.compile(r".*?var:(.*?);")
>>> regex.sub(r"\1test", "fksf var:asfkj;")
'asfkjtest'
19
>>> import re
>>> originalstring = 'fksf var:asfkj;'
>>> pattern = '.*?var:(.*?);'
>>> pattern_obj = re.compile(pattern, re.MULTILINE)
>>> replacement_string="\\1" + 'test'
>>> pattern_obj.sub(replacement_string, originalstring)
'asfkjtest'
补充说明:Python文档是一个非常有用的参考资料。