书接上一回:
 
实例五:
美化数字
要求:在数字字符串的恰当位置添加逗号,方便用户阅读
第一个字符串:需要在1 2之间、4 5之间、7 8之间添加逗号。
第二个
字符串:
需要在3 4 之间添加
第三个
字符串:
不要添加任何
public
 
static
 
void
 main(String[] args) {
String[] numbers = 
new
 String[]{
"1234567890"
,
"123456"
,
"123"
};
for
(String number:numbers){
System.
out
.println(
"之前:"
+number + 
"\n"
 + 
"美化:"
+
beautifyNumber
(number) + 
"\n"
);
}
}
private
 
static
 String beautifyNumber(String number) {
return
 number.replaceAll(Regexes.
NUMBER_BEAUTIFY_REGEX
","
);
}
}
public
 
class
 Regexes {
public
 
static
 
final
 String 
NUMBER_BEAUTIFY_REGEX
 = 
"(?<=\\d)(?=((\\d{3})+\\b))"
;
}
运行结果:
之前:1234567890
美化:1,234,567,890
之前:123456
美化:123,456
之前:123
美化:123
4、
正则表达式的主要思想
1)
、正则表达式是一种描述字符串
结构模式
形式化
表达语言
2)
、结构模式
·有结构的字符串,而不是字符流
3)
、形式化
·用形式化的表达方法应付变化的情况
所谓结构化:
String emailRegex = 
Regexes.
USERNAME_REGEX
 + 
"@"
 + Regexes.
HOSTNAME_REGEX
;
String email = 
"web163@163.com";
将感兴趣的用@构造出来。
web163@163.com
能与我们构造的结构化相匹配,这就是所谓的结构化。
所谓形式化的表达方式:
譬如:
String 
regex1
 = 
"\\d+"
;
它匹配的是完全由10进制数值构成的字符串,不是匹配\\d+的字符串。
String 
DUP_WORD_REGEX
 = 
"(?<=\\b)(\\w+)\\s+\\1(?=\\b)"
;
...
String regex = Regexes.
DUP_WORD_REGEX
;
return
 sentence.replaceAll(regex,
"$1"
);
....
$1是与正则表达式相关的概念
这个正则表达式能够智能处理识别字符串中重复的单词
6、
小结
·一门功能强大的文本处理语言
·灵活、高效、强大、便捷
·结构模式、形式化
 
正则表达式 学习笔记1 全文完