书接上一回:
实例五:
美化数字
要求:在数字字符串的恰当位置添加逗号,方便用户阅读
第一个字符串:需要在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 = "[email protected]";
将感兴趣的用@构造出来。
[email protected]能与我们构造的结构化相匹配,这就是所谓的结构化。
所谓形式化的表达方式:
譬如: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 全文完
本文转自jooben 51CTO博客,原文链接:http://blog.51cto.com/jooben/316594