关于python和java中使用正则表达式,结果不一致问题

在处理叠词分割字符串时,博主发现在Python中使用正则表达式得到的结果与Java不同。尽管Python的正则表达式看似正确,但实际效果未如预期。在Java中执行相同操作则得到了正确结果。后来,通过社区反馈,博主找到了Python中的解决办法,即使用`re.split(reg, s)[::2]`,这使得Python也能得到正确结果。" 128804718,10710867,使用esp8266打造手机投屏设备,"['单片机', '物联网', 'c语言', 'java']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    前几天在python中使用正则表达式做叠词分割字符串时,发现言叠词切割不对,通过JAVA做试验时,结果是正确的,两种语言使用通用的正则式叠词分割字符串结果不一致,经过检查python中确信使用的正则表达式是ghdq正确的,就是结果不正确,不知道是不是这个语言处理叠词分割时有缺陷?

举例如下:

JAVA源代码:

01

02

03

04

05

06

07

08

09

10

String s = "abc##qwe###jklllll1232222bcd####abcccc3440123324";

 

        //String s="abc11bcd22cdef33hjkl##opq##yut";

        String regex = "(.)\\1+";

 

                String[] strs = s.split(regex);

 

                for (int i = 0; i < strs.length; i++) {

                    System.out.println(strs[i]);

                }

 

结果出来是: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']

额兴趣的朋友可以一试,也可以分析一下原因,共同探讨。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值