前几天在python中使用正则表达式做叠词分割字符串时,发现言叠词切割不对,通过JAVA做试验时,结果是正确的,两种语言使用通用的正则式叠词分割字符串结果不一致,经过检查python中确信使用的正则表达式是ghdq正确的,就是结果不正确,不知道是不是这个语言处理叠词分割时有缺陷?
举例如下:
JAVA源代码:
01 02 03 04 05 06 07 08 09 10 |
|
结果出来是:abc
qwe
jk
123
bcd
ab
3
012
24
结果是正确的
Python代码:
s
=
'abc##qwe###jklllll1232222bcd####abcccc3440123324'
reg
=
'(.)\\1+'
#方法1:
s.split(reg)
#返回的还是原字符串
#方法2
import
re
re.split (reg,s)
#结果是:
[
'abc'
,
'#'
,
'qwe'
,
'#'
,
'jk'
,
'l'
,
'123'
,
'2'
,
'bcd'
,
'#'
,
'ab'
,
'c'
,
'3'
,
'4'
,
'012'
,
'3'
,
'24'
]
#结果不正确
201912月10日有朋友在我其它论坛回复了解决办法,最终结果是正确的,解决办法如下:
re.split(reg,s)[::2]
结果是:[
'abc'
,
'qwe'
,
'jk'
,
'123'
,
'bcd'
,
'ab'
,
'3'
,
'012'
,
'24'
]
额兴趣的朋友可以一试,也可以分析一下原因,共同探讨。