某些字符需要在它们之前使用'\'来删除

时间:2013-09-18 17:57:28

标签: python regex

哪些字符需要'\'才能从文本中删除?
像这样:

import re
my_source = re.sub('\(','',my_source)

3 个答案:

答案 0 :(得分:4)

特殊字符(.?(),...)应该转义为字面匹配:

您可以在here - Regular Expression Syntax找到特殊字符。

但你不需要自己动手。您可以使用re.escape

>>> import re
>>> re.escape('(')
'\\('
>>> print(re.escape('('))
\(

答案 1 :(得分:2)

由于你的问题似乎只是想从字符串中删除某些字符,所以根本不需要使用正则表达式。在python中执行此操作的最简单方法是使用字符串对象的replace方法:

>>> my_source = 'Hello, world!'
>>> my_source.replace(", world", "")
'Hello!'

如果你有一个要从输入中删除的字符串列表,你可以这样做:

>>> my_source = 'ABCDEFG_HI(JKLM).NOP'
>>> deletions = ('_', '(', ')', 'EF', 'O')
>>> for deletion in deletions:
...     my_source = my_source.replace(deletion, "")
... 
>>> my_source
'ABCDGHIJKLM.NP'

答案 2 :(得分:1)

  

哪些字符需要'\'才能从文本中删除?

您必须且不得逃避的字符取决于您正在使用的正则表达式指示。

在大多数情况下,以下是需要在字符类[]之外转义的字符:

.^$*+?()[{\|

字符^-]\需要在字符类中转义。并不总是需要在字符类中转义-,但对我而言,这样做更安全。

但请注意,我说这取决于您正在使用的正则表达式。

使用re.sub()

的示例

替换字符串中的() ..

oldStr = '(foo) bar (baz)'
print re.sub(r'[()]+', '', oldStr)

输出:

foo bar baz

使用re.search()

的示例

我们正在使用re.search查找字符串中第一个()之间的文字。我们逃离(下一次使用正则表达式捕获组([a-zA-Z]+)寻找单词字符,以)结尾

m = re.search('\(([a-zA-Z]+)\)', oldStr)
print m.group(1)  #prints 'foo'

使用re.findall()

的示例
m = re.findall(r'\(([a-zA-Z]+)\)', oldStr)
print ", " . join(m)

# prints `foo, baz`