我希望能够接受一个字符串,如果找到r'\ snot \ s',基本上连接'not'和下一个单词(用下划线替换其间的空格)。
所以如果字符串是
string =“不是我的名字是布莱恩,我对此一无所知”
正则表达式后的结果为:
'不是我的名字是布莱恩,我不喜欢什么'
(不是没有触及)。
我需要找到“不是”,要么是用空格分隔,要么是在句子的开头,然后将它加入'_'和下一个单词。
答案 0 :(得分:2)
将re.sub()
与保存组一起使用:
>>> re.sub(r"not\s\b(.*?)\b", r"not_\1", string)
'not_that my name is Brian and I am not_happy about nothing'
not\s\b(.*?)\b
此处匹配not
后跟空格,后跟单词(\b
是单词边界)。 (.*?)
是一个捕获组,可帮助我们捕获not
之后的单词,然后我们可以在替换中引用\1
)。
答案 1 :(得分:2)
为什么不在字符串上使用replace方法?它比正则表达式更具可读性。
>>> msg = "not that my name is Brian and I am not happy about nothing"
>>> msg.replace('not ', 'not_')
'not_that my name is Brian and I am not_happy about nothing'
答案 2 :(得分:1)
如何:
\bnot\s
示例:强>
>>> string
'not that my name is Brian and I am not happy about nothing'
>>> re.sub(r'\bnot\s', 'not_', string)
'not_that my name is Brian and I am not_happy about nothing'