python re.split:如何删除'。'

时间:2017-05-26 06:02:40

标签: python regex

以下是我的例子:

   In [65]: text = 'Plant.Plant,Plant,update,seedId,Plant,update,status'
   In [66]: pattern = r"(?u)\b\w\w+\b"
   In [67]: import re
   In [68]: re.split(pattern,text)
   Out[68]: ['', '.', ',', ',', ',', ',', ',', ',', '']
                  ^

我应该如何更改可以获得的模式:

  ['', ',', ',', ',', ',', ',', ',', '']

此列表的第一个和最后一个元素是'',另一个元素是',',但解决方案的模式将获得所有元素''。

2 个答案:

答案 0 :(得分:2)

您可以添加一个可选的非捕获组,其中匹配0次出现的点后跟1个字的字符:

import re
text = 'Plant.Plant,Plant,update,seedId,Plant,update,status'
pattern = r"(?u)\b\w{2,}(?:\.+\w{2,})*\b"
print(re.split(pattern,text)) # => ['', ',', ',', ',', ',', ',', ',', '']

请参阅Python demoregex demo

<强>详情

  • (?u) - 内联re.UNICODE修饰符
  • \b - 字边界
  • \w{2,} - 2个或更多单词字符(如果您只需要字母,请使用[^\W\d_]{2,}
  • (?: - 开始匹配0次以上的非捕获组...
    • \.+ - 1+点
    • \w{2,} - 2个或更多单词字符
  • )* - 小组结尾
  • \b - 字边界。

答案 1 :(得分:1)

尝试这种模式

pattern = r"(?u)\b\w?.\w+\b"