Java # 正则表达式的简单应用,常用的正则表达式

一、Java使用正则表达式

1. replaceAll() --- 去掉所有的特殊字符

String regEx = "[`!@#$%^&*()+=|{}':;',//[//].<>/?!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";
Pattern pattern = Pattern.compile(regEx);
Matcher matcher = pattern.matcher(str);
matcher.replaceAll("").trim();

 2. find() -- 匹配任意字符串中包含形如“@数字&”格式的子串

String st="看,墙面上的雕塑是什么?@322&大家一定猜到了,这是一个神经元。";
Pattern pattern = Pattern.compile("^(.*)@-?[1-9]\\d*&(.*)$"); //去掉空格符合换行符
Matcher matcher = pattern.matcher(st);
boolean result = matcher.find();

3.  检查字符串中是否存在指定字符

String text    = "there are many hotels " +"by amap.the adrr: http://xxxx pattern.";
String pattern = ".*http://.*";
boolean matches = Pattern.matches(pattern, text);//true则存在

4. Matcher 匹配指定格式的特殊字符串

Pattern pattern = Pattern.compile("[0-9]*");//判断是否都是数字
Matcher isNum = pattern.matcher("1123是数字");
if(isNum.matches()) {
    System.out.println("全部是数字");
} else {
    System.out.println("有汉字");
}

二、正则表达式相关

1. 常用预留字符

字符 说明
? 匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“does”或“does”中的“do
* 匹配前面的子表达式零次或多次。例如,zo*能匹配“z”以及“zoo
+ 匹配前面的子表达式一次或多次。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z
\ 转义字符
\d 匹配任意的数字  --->  [0-9]
\D 匹配任意非数字  --->  [^0-9]
\s 匹配任意空白符(空格、缩进、换行、回车)
\S 匹配任意非空白字符
\w 匹配任意单词
\W 匹配任意非单词
. 任意英文字母

2. [] 的用法

限定符 说明
[a-z] 匹配 a -- z 中的任一字符,[abc]匹配 a 或 b 或 c
[0-9] 匹配 0 -- 9 中的任一个数字字符
[0-9A-Z] 匹配 0 -- 9 或 A -- Z范围中一个字符
[abc] 匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a
[^abc] 匹配不是 a, b, c 的字符
[a-z&&[^m-p]] 匹配 a -- z 之间的所有字符,但是不包括 m -- p 之间的字符

3. 边界匹配

边界符 说明
^ 匹配开头
$ 匹配结尾
\b 匹配单词边界
\B 匹配非单词边界
\A 匹配文本开头
\G 匹配前一匹配项结尾
\Z 输入的结尾,仅用于最后的结束符(如果有的话)
\z 匹配文本结尾

 

4. 逻辑操作符

 操作是默认的, abc,意味着 a 与 b 与 c

或 | 操作,abc|yz,意味着 abc 或者 yz

5. 量词表示

字符 说明
a{n} 匹配 n 次 a 字符
a{n,} 匹配最少 n 次 a 字符
a{n, m} 匹配最少 n 次,最多 m 次 a 字符

 

6. 常用的正则表达式

说明 对应的正则表达式
用户名(3到16位) /^[a-z0-9_-]{3,16}$/
密码(6到18位) /^[a-z0-9_-]{6,18}$/
十六进制值 /^#?([a-f0-9]{6}|[a-f0-9]{3})$/
电子邮箱 /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/
/^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/
URL /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/
IP 地址 /((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)/
/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/
HTML 标签 /^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/
删除代码\\注释 (?<!http:|\S)//.*$
Unicode编码中的汉字范围 /^[\u2E80-\u9FFF]+$/

猜你喜欢

转载自blog.csdn.net/qq_38134242/article/details/114089665