一直都没有认真的学习Java正则表达式,现在好好的学习学习一下,把各个字符表示的意思总结一下。
所谓的正则表达式就是处理字符串的特殊字符串,用来字符串的匹配,字符串的查找,字符串的替换。
普通字符:字母,数字,汉字,下划线。
\r, \n, \t, \f 表示回车符,换行符,制表符,换页符
. 表示任意的一个字符
X? 表示可以出现0次或者一次
X+ 表示可以出现1次或者多次
X* 表示可以出现任意次
X{n}表示可以出现n次
X{m,n}表示可以最少出现次,最多出现n次
X{n,} 表示最少出现n次
[ ] 匹配括号中任意一个字符
[^ ] 匹配括号中字符以外的任意一个字符
\d 表示0-9之间的任意一个数字字符,即[0-9]
\D 表示0-9之外的任意数字字符,即[^0-9]
\s 表示空格,字符表,换页符等空白字符任意一个
\S 表示除空白以外的任意一个字符,[^\s]
\w表示字母,数字,下划线中任意一个字符,即[a-zA-Z_0-9]
\W 表示字母,数字,下划线以外的任意一个字符,即[^a-zA-Z_0-9]
^ 表示不匹配任何字符,字符串开始的位置,即^h必须h开头
$表示不匹配任何字符,字符串结束的位置,即r$必须以r结尾
\b该符号不匹配任何字符,表示单词的边界
\B该符号不匹配任何 字符,表示非单词的边界,即[^\b]
| 用来连接两个子表达式,表示或的关系,X|Y 表示X或者Y中任意字符
()作为一个单元一个分组
Pattern pattern1 = Pattern.compile("Task Endpoint:\\s+(\\S+)");
Matcher m1 = pattern1.matcher(line); //Task Endpoint:tmr2slc.vip.ebay.com (ManagedNode)
tmr = m1.group(1); // tmr2slc.vip.ebay.com
Pattern pattern2 = Pattern.compile("^\\s*(\\S+)\\s+\\S+\\s+(\\S+).*connected");
Matcher m2 = pattern2.matcher(line); // slc5b03c-6whp.stratus.slc.ebay.com slctivgw30.slc.ebay.com linux-ix86 41146 446034 connected
String server = m2.group(1); // slc5b03c-6whp.stratus.slc.ebay.com
String type = m2.group(2); // linux-ix86
//其中group(0)就表示的是整个匹配的字符串
手机号码匹配: "^((13[0-9])|(15[0-3,5-9])|(18[0,5-9]))\\d{8}$"
email匹配:"^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$"
验证身份证:"(^\\d{17}[a-zA-Z0-9]$)|(^\\d{14}[a-zA-Z0-9]$)"
url验证: "^http://[\\w\\.\\-]+(?:/|(?:/[\\w\\.\\-]+)*)?$" (?:/|(?:/[\\w\\.\\-]+)*)? 这个表示路径可以为空、/结尾
ip验证:"(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)" 总是感觉怪怪的。