书接上一回:
实例五:
美化数字
要求:在数字字符串的恰当位置添加逗号,方便用户阅读
第一个字符串:需要在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 全文完