Java # 正则表达式的简单应用,常用的正则表达式
程序员文章站
2024-02-10 09:14:58
...
一、Java使用正则表达式
1. replaceAll() --- 去掉所有的特殊字符
String regEx = "[`[email protected]#$%^&*()+=|{}':;',//[//].<>/?!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";
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]+$/ |
上一篇: 求整数的逆序数