正则表达式语言由两种字符组成:原意文本字符和元字符。元字符使得表达式具有处理能力,如 [ ] ,*,^,\w 之类的。
简单的介绍下常见的几个:
1.针对但个字符匹配的元字符:
\x : 转义字符。将字符转义。比如 \b 就不是斜线 和字符b的意思了,而是元字符,代表单词边界的意义了。
. :匹配除\n以外的任何字符。
[] :匹配中括号中的其中一个字符。如[abc],[a-z],[^abc]
\d :匹配0-9的数字。
\w :匹配单个字符,字母数字或者下划线。[a-zA-Z0-9]
\s :匹配任意的空白字符。
2.针对字符串的限定符:
\b :单词边界。
$ :匹配以指定的字符串结尾。 如ab$。
^ :字符串必须以指定字符串开始。 "^hh" :字符串必须以hh 开始。
* :匹配零个到多个的字符。
? :匹配零个到一个字符。
{} :匹配多个字符。如 {n},{n,},{n,m}
+ :匹配至少一个字符。
还有一个特殊的字符:
\ :转义字符,如果想是单纯的字符"\"和"w"使用,那么就得转义 :\\w
1.分割汉字
分割汉字 不能直接使用splite()方法分割汉字。
String res = "四川省成都市武侯区高升桥路2号-附3号"; String strin = ""; if (res.contains("路")) { int i = res.indexOf("路"); strin = res.substring(0,i + 1); }
上面的例子是按“路分割,得到前面的字符串。
2.\(?0\d{2}[) -]?\d{8}:
这个表达式可以匹配几种格式的电话号码,像(010)88886666,或022-22334455,或02912345678等。我们对它进行一些分析吧:首先是一个转义字符\(,它能出现0次或1次(?),然后是一个0,后面跟着2个数字(\d{2}),然后是)或-或空格中的一个,它出现1次或不出现(?),最后是8个数字(\d{8})。这个表达式可以匹配几种格式的电话号码,像(010)88886666,或022-22334455,或02912345678等。我们对它进行一些分析吧:首先是一个转义字符\(,然后是一个0,后面跟着2个数字(\d{2}),然后是)或-或空格中的一个,它出现1次或不出现(?),最后是8个数字(\d{8})。
注意:
1.对于中文字符的匹配是采用其对应的 Unicode 编码来匹配的,对于单个 Unicode 字符,如 \u4e00 表示汉字“一”, \u9fa5 表示汉字“龥”,在 Unicode 编码中这分别是所能表示的汉字的第一个和最后一个的 Unicode 编码,在 Unicode 编码中能表示 20901 个汉字。