天天看点

正则表达式 学习笔记1.3

书接上一回:

实例五:

美化数字

要求:在数字字符串的恰当位置添加逗号,方便用户阅读

第一个字符串:需要在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

下一篇: freenas

继续阅读