以下是我的例子:
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]: ['', '.', ',', ',', ',', ',', ',', ',', '']
^
我应该如何更改可以获得的模式:
['', ',', ',', ',', ',', ',', ',', '']
此列表的第一个和最后一个元素是'',另一个元素是',',但解决方案的模式将获得所有元素''。
答案 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)) # => ['', ',', ',', ',', ',', ',', ',', '']
<强>详情
(?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"