我必须从单词的开头和结尾删除任何标点符号。
我正在使用re.sub
来执行此操作。
re.sub(r'(\w.+)(?=[^\w]$)','\1',text)
分组无法解决 - 我在命令行中☺.
得到Mihir4.
答案 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