Python用单词代替单词,然后连接下一个单词

时间:2016-02-08 02:59:05

标签: python regex

我希望能够接受一个字符串,如果找到r'\ snot \ s',基本上连接'not'和下一个单词(用下划线替换其间的空格)。

所以如果字符串是

string =“不是我的名字是布莱恩,我对此一无所知”

正则表达式后的结果为:

'不是我的名字是布莱恩,我不喜欢什么'

(不是没有触及)。

我需要找到“不是”,要么是用空格分隔,要么是在句子的开头,然后将它加入'_'和下一个单词。

3 个答案:

答案 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'