正则表达式

来源:互联网 发布:linux公社ftp下载 编辑:程序博客网 时间:2024/06/01 08:54
《正则表达式》
1.
\b:匹配一个位置——单词的开头或结尾。
种类:位置。
eg:
Pattern.matches("\\bhi\\b", "hi") 返回true;
即除"hi"外,没有其他任何字符。


2.
.:除了换行符以外的任意字符。
种类:除换行符外的任意字符。数目:有且仅有一个。
eg:
Pattern.matches("c.t", "cat") 返回false;
Pattern.matches("c.t", "caat") 返回false;


3.
*:前面的字符出现0次或多次。(与前面的字符构成一个整体,组合使用)
种类:与*前面的字符完全相同。数目:零次或多次。


.与*组合可表示任意长度的任意内容的字符串。
eg:
Pattern.matches("c.*t","cat") 返回true


eg:所以.*就表示任意长度的任意字符串。


4.
\d:匹配一位数字。
种类:数字。数目:有且仅有一个。
eg:
Pattern.matches("c\\dt","ct") 返回false
Pattern.matches("c\\dt","c8t") 返回true


5.
{sum}:前面的字符必须连续出现不多不少sum次。(与前面的字符构成一个整体,组合使用)
{min,max}:前面的字符必须出现min到max次 ,即min<= N <=max
{min,}:min或更多次。
种类:与前面的字符完全相同。数目:sum个。
eg:
Pattern.matches("c\\d{0}t","ct") 返回true


Pattern.matches("c\\d{1}t","ct") 返回false
Pattern.matches("c\\d{1}t","c8t") 返回true


Patter.matches("\\ba\\d{0,3}\\b","a") 返回true
Patter.matches("\\ba\\d{0,3}\\b","a1") 返回true
Patter.matches("\\ba\\d{0,3}\\b","a123") 返回true
Patter.matches("\\ba\\d{0,3}\\b","a1234") 返回false
6.
\s:匹配一个空白字符。
种类:空白字符(空白字符包含很多种,并不仅仅是空格。还有制表符(tab)、换行符、中文全角空格等)。
数量:有且仅有一个。
eg:
Pattern.matches("c\\st","ct") 返回true —— 无空白字符
Pattern.matches("c\\st","c t") 返回true —— 有一个“空格”字符
Pattern.matches("c\\st","ct") 返回true —— 有一个“制表符”
Pattern.matches("c\\st","c  t") 返回false —— 由两个“空格”字符


7.
\w:大小写英文字母、数字、下划线。
种类:A-Z a-z 0-9 _。 数量:有且仅有一个。
eg:
Pattern.matches("c\\wt","ct") 返回false —— 没有 【A-Z a-z 0-9 _】
Pattern.matches("c\\wt","cAt") 返回true
Pattern.matches("c\\wt","cAAt") 返回false —— 多于一个


组合:\w*就是任意数量的[A-Z a-z 0-9 _]
eg:
Pattern.matches("c\\w*t","cAa8_t") 返回true


8.
+:前面的字符出现一次或多次。(与前面的字符构成一个整体,组合使用。)
种类:与前面的字符完全相同。数量:一次或多次
区别*:*重复0-n次,+重复1-n次。


9.
^:字符串开头
$:字符串结尾
种类:仅指一个位置。
eg:
Pattern.matches("^a\\d{0,3}$","a") 返回true
Pattern.matches("^a\\d{0,3}$","a1") 返回true
Pattern.matches("^a\\d{0,3}$","a123") 返回true
Pattern.matches("^a\\d{0,3}$","a1234") 返回false


10.
?:前面的字符出现0次或1次。
种类:与?前面的字符相同。数量:0次或1次。
eg:
Pattern.matches("a?","") 返回true
Pattern.matches("a?","a") 返回true


11.
[...]:相当于枚举。即出现且只能出现"..."中的一个
eg:
Pattern.matches("[0-9]","") 返回false —— 没出现
Pattern.matches("[0-9]","0") 返回true
Pattern.matches("[0-9]","01") 返回false —— 出现了不止一次


12.
|:将两个匹配条件进行逻辑或运算。可以用“()”改变优先级。
eg:
Pattern.matches("\\d{8}|\\d{5}", "12345") 返回true
Pattern.matches("\\d{8}|\\d{5}", "123456") 返回false
Pattern.matches("\\d{8}|\\d{5}", "12345678") 返回true


13.
():将条件进行分组。
eg:
Pattern.matches("(\\d{8}|\\d{5})|a[0-3]{2}", "12345678") 返回true
Pattern.matches("(\\d{8}|\\d{5})|a[0-3]{2}", "123456") 返回false
Pattern.matches("(\\d{8}|\\d{5})|a[0-3]{2}", "12345") 返回true
Pattern.matches("(\\d{8}|\\d{5})|a[0-3]{2}", "a00") 返回true
Pattern.matches("(\\d{8}|\\d{5})|a[0-3]{2}", "00") 返回false


14.反义
\W ,\S , \D , \B , [^x] ,[^aeiou]
见表3


15.向后引用:
若有多个分组"()",默认情况下,会自动将分组按从左到右的顺序编号为1、2、3...。
可以重复搜索前面某个分组匹配的文本,例如,\1代表分组1匹配的文本。
eg:
\b(\w+)\b\s+\1\b 会匹配例如:"go go"、"kitty kitty"
Pattern.matches("\\b(\\w+)\\b\\s+\\1\\b+", "go go" ) 返回true
Pattern.matches("\\b(\\w+)\\b(\\s+\\1\\b)+", "go go go go" ) 返回true


?<name>:可以用来指定组名。
eg:








16.附录
1.所有限定符的比较



2.要查找元字符本身,须用\进行转义。
eg:
Pattern.matches("\\.","a") 返回false

Pattern.matches("\\.",".") 返回true


参考网站:

正则表达式30分钟入门教程

正则表达式 小事好

Java中使用正则表达式函数

0 0
原创粉丝点击