Python正则表达式示例

时间:2013-06-28 02:06:10

标签: python

如果我想替换以下语句结构中的模式:

cat&345;
bat &#hut;

我想替换从&开始到之前结束的元素(不包括;)。这样做的最佳方式是什么?

4 个答案:

答案 0 :(得分:1)

这是一个很好的正则表达 import re
result = re.sub("(?<=\\&).*(?=;)", replacementstr, searchText)

基本上,这会将替换置于&;

之间

答案 1 :(得分:1)

包括或不包括&amp;在替换?

>>> re.sub(r'&.*?(?=;)','REPL','cat&345;')           # including
'catREPL;'
>>> re.sub(r'(?<=&).*?(?=;)','REPL','bat &#hut;')    # not including
'bat &REPL;'

说明:

  • 虽然这里不需要,但使用r'raw string'来防止必须转义正常表达式中经常出现的反斜杠。
  • .*?是任何东西的“非贪婪”匹配,这使得匹配在第一个分号处停止。
  • (?=;)匹配必须后跟分号,但不包括在匹配中。
  • (?<=&)该匹配必须以&符号开头,但不包含在匹配项中。

答案 2 :(得分:0)

可能会一起走向不同的方向use HTMLParser.unescape()unescape()方法没有记录,但它似乎不是“内部”的,因为它没有前导下划线。

答案 3 :(得分:0)

您可以使用否定的字符类来执行此操作:

import re

st='''\
cat&345;
bat &#hut;'''

for line in st.splitlines():
    print line
    print re.sub(r'([^&]*)&[^;]*;',r'\1;',line)