用匹配的模式替换python中的String

时间:2014-07-13 15:10:43

标签: python regex python-2.7

我必须从单词的开头和结尾删除任何标点符号。 我正在使用re.sub来执行此操作。

re.sub(r'(\w.+)(?=[^\w]$)','\1',text)

分组无法解决 - 我在命令行中☺.得到Mihir4.

2 个答案:

答案 0 :(得分:1)

字符串文字'\1'相当于'\x01'。您需要将其转义或使用原始字符串文字来表示反向引用组1。

顺便说一下,你不需要使用捕获组。

>>> re.sub(r'^[^-\w]+|[^-\w]$', '', 'Mihir4.')
'Mihir4'

答案 1 :(得分:1)

如果你有多个单词的字符串,例如

text = ".adfdf. 'df' !3423? ld! :sdsd"

这将起到作用(当然,它也适用于单个单词):

>>> re.sub(r'[^\w\s]*(\w+)[^\w\s]*', r'\1', text)
'adfdf df 3423 ld sdsd'

注意r'\1'中的r。这相当于'\\1'

>>> re.sub(r'[^\w\s]*(\w+)[^\w\s]*', '\\1', text)
'adfdf df 3423 ld sdsd'

进一步阅读:the backslash plague