黑马程序员技术交流社区
标题:
大家正则表达式理解的好吗?问个有关它的问题请看下
[打印本页]
作者:
莞漂族
时间:
2014-6-3 18:56
标题:
大家正则表达式理解的好吗?问个有关它的问题请看下
String str = "192.
6
8
.10.254 102.49.23.13 10.10.10.10 2.2.2.2 8.109.90.3
";
str = str.replaceAll("(\\d+)","
00
$1
");这句的打印结果:00192.0068.0010.00254 00102.0049.0023.00013 0010.0010.0010.0010 002.002.002.002 0
08.00109.0090.0030
str = str.replaceAll("
("0*(\\d+)","$1
");这句打印的结果是:
192.68.10.254 102.49.23.13 10.10.10.102 2.2.2.2
8.109.
第
二句毕老师在视频上是这么说的:0未出现过多次,数字出现1次或多次,
为什么打印的不是192.068.010.254呢?为什么要将
非零数字前面的0去掉呢?查jdk文档发现X* ,表示X出现零次或多次, 那么0*就表示0出现零次或多次,0出现多次的情况是当0处于非零数字后面的情况吗?
作者:
呀嘛咕
时间:
2014-6-3 21:54
这是加两个0:
str = str.replaceAll("(\\d+)","00$1");
这是去掉前面的0
str = str.replaceAll("("0*(\\d+)","$1");
所以你要要在中间加一个 保留3为数字的替换:
str = str.replaceAll("0*(\\d{3})","$1");
然后在去0
所以是:
str = str.replaceAll("(\\d+)","00$1");
str = str.replaceAll("0*(\\d{3})","$1");
str = str.replaceAll("("0*(\\d+)","$1");
作者:
luheqi
时间:
2014-7-1 14:48
str = str.replaceAll("0*(\\d+)","00$1");
System.out.println(str);
str = str.replaceAll("0*(\\d{3})","$1");
System.out.println(str);
str = str.replaceAll(("0*(\\d+)"), "$1");
作者:
luheqi
时间:
2014-7-1 14:49
你们的分号和括号竟然是单数!!!太牛了
作者:
luheqi
时间:
2014-7-1 14:51
第三个还可以省略一对括号:str = str.replaceAll("0*(\\d+)", "$1");
作者:
泪雨星空
时间:
2016-4-27 23:00
看不懂,还需努力,加油
作者:
ZZT
时间:
2016-4-29 18:05
顶顶顶顶d
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2