使用正则表达式删除python中与句点或句号相关的单词

时间:2018-05-18 10:50:36

标签: python regex string

如何在python中使用正则表达式删除与句点相关的单词。 ex: for a string 'random random 123.4445.764 random goo.34.hi random',操作返回'random random random random'

3 个答案:

答案 0 :(得分:1)

使用re.sub

<强>演示:

import re
s =  'random random 123.4445.764 random goo.34.hi random'
print(re.sub("\w*\.\w*", "", s))

<强>输出:

random random  random  random

答案 1 :(得分:1)

要匹配与句点相关联的单词,您可以使用:

\b\w+(?:\.\w+)+\s*

更新了@Jan

的评论

详情

  • \b字边界
  • \w+匹配一个或多个单词字符
  • (?:非捕获组
    • \.\w+匹配一个点和一个或多个单词字符
  • )+关闭非捕获组并重复一次或多次以匹配a.ba.b.c
  • \s*匹配空格字符的零次或多次。

例如:

import re
str =  'random random 123.4445.764 random goo.34.hi random'
print(re.sub("\\b\w+(?:\.\w+)+\s*", "", str))

那会给你:

  

随机随机随机

Demo Python

答案 2 :(得分:0)

另一种不使用正则表达式的方法:

" ".join(s for s in string.split() if '.' not in s)
#'random random random random'