-2

哪些字符需要在它们之前从文本中删除?
像这样 :

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

3 回答 3

4

特殊字符 ( ., ?, (, ), ...) 应转义以匹配字面意思:

您可以从此处找到特殊字符- 正则表达式语法

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

>>> import re
>>> re.escape('(')
'\\('
>>> print(re.escape('('))
\(
于 2013-09-18T17:59:56.160 回答
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'
于 2013-09-18T18:01:51.803 回答
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`
于 2013-09-18T18:13:11.920 回答