【问题标题】:Python Regex, re.sub, replacing multiple parts of pattern?Python Regex,re.sub,替换模式的多个部分?
【发布时间】:2010-08-19 07:02:46
【问题描述】:

我似乎在这方面找不到好的资源。我正在尝试做一个简单的替换

我想替换它 (.*?) 所在的部分,但无法弄清楚如何执行此操作的语法。我知道如何在 PHP 中执行此操作,所以我一直在搞砸什么我认为它可以基于此(这就是为什么它有 $1 但我知道这在 python 中是不正确的)。如果有人能显示正确的语法,我将不胜感激,我不会询问任何特定字符串的细节,我该如何替换这样的东西,或者如果它有超过 1 个 () 区域.. 谢谢

originalstring = 'fksf var:asfkj;'
pattern = '.*?var:(.*?);'
replacement_string='$1' + 'test'
replaced = re.sub(re.compile(pattern, re.MULTILINE), replacement_string, originalstring)

【问题讨论】:

  • 你能举个例子说明你希望得到的字符串是什么吗?是asfkjtest吗?
  • 它只是一个例子,它的用途并不重要,我在 php 中做了很多正则表达式的东西,我不想在 python 中做,所以我只需要得到如何做到这一点的想法

标签: python regex


【解决方案1】:
>>> 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 Docs 可能是非常有用的参考。

【讨论】:

  • 我知道,我不知道为什么每个人都提到这个(关于 python 文档),我已经知道这些并查看了它们,我在这里发帖,因为我仍然不清楚在咨询这个之后如何做到这一点,Python 似乎不像 PHP,它在这样的主题上有许多其他资源,所以,经过更多搜索,我觉得我应该在这里发帖(我不是在批评 python为此,我喜欢它,这只是一个观察)
  • 无论如何,感谢您在发布示例时提供的帮助,非常感谢
  • 糟糕,我没看到。很高兴我能帮上忙!
  • 实际上使用原始字符串允许您使用单个斜杠 r'\1'
【解决方案2】:
>>> import re
>>> regex = re.compile(r".*?var:(.*?);")
>>> regex.sub(r"\1test", "fksf var:asfkj;")
'asfkjtest'

【讨论】:

    【解决方案3】:

    python 文档在线,re 模块的文档在这里。 http://docs.python.org/library/re.html

    不过,为了回答您的问题,Python 使用 \1 而不是 $1 来指代匹配的组。

    【讨论】:

      猜你喜欢
      • 2016-10-13
      • 1970-01-01
      • 2013-04-26
      • 2012-08-15
      • 2015-12-18
      • 1970-01-01
      • 1970-01-01
      • 2022-12-04
      相关资源
      最近更新 更多