首尾
注:大多软件、方法会默认,无需手动添加
// 全文查找出现的所有匹配字符
/……/g
// 全文查找、忽略大小写
/……/ig
基础
// *:匹配前面的子表达式零次或多次
// +:匹配前面的子表达式一次或多次
// ?:匹配前面的子表达式零次或一次
// .:匹配除换行符 \n 之外的任何单字符
// |:或
// ():标记一个子表达式的开始和结束位置,可多个
// ^:按行区分,开头
// $:按行区分,结尾
// {n}:匹配确定的 n 次
// {n,}:至少匹配 n 次
// {n,m}:最少匹配 n 次且最多匹配 m 次
// .*:匹配所有字符
// \d:匹配所有数字,等同[0-9],\d*:匹配所有数字
// \D:匹配非数字字符
// \s:匹配所有空白字符
// \S:匹配所有非空白字符
// \w:匹配字母、数字、下划线。等价于 [A-Za-z0-9_]
// \W:匹配任何非单词字符
// \B:匹配不是单词开头或结束的位置
// [A-Z]:匹配所有大写字母
// [a-z]:匹配所有小写字母
// [^x]:匹配除了x以外的其他内容
// \b:字符边界,按\w的内容区分,
按行匹配
// 空白行
\n\s*\r
// 匹配每个< >号之间的所有内容,若去除?号,则表示从第一个<到最后一个>号之间的所有内容
<.*?>
// 匹配开头为aa 结尾为两位数的行数据
^aa.*[1-9][0-9]$
// 匹配每行开头为aa,结尾为4中的所有内容,如:21 aa23 21 234 12 中的 aa23 21 234
// \b:字符边界
\baa.*4\b
// 匹配以数字开头相邻字母结尾的内容 如:23bdd4 cs3 a 中的 3bdd,若去除+号,则匹配为3b
([0-9])([a-z]+)
// 匹配包含-,t,a的所有字符
[-ta]
// 匹配除了-,t,a外的其他所有字符
[^-ta]
// 匹配数字前面的aa,如:aa4aa 则取第一个aa
// ?=:取前面的内容
aa(?=\d+)
// 匹配数字后面的aa,如:aa4aa 则取第二个aa
// ?<=:取后面的内容
(?<=\d+)aa
//匹配aa后面不是数字的aa,如:aa4aa 则取第二个aa
// ?!:后面不是
aa(?!\d+)
数字匹配
//匹配正数、负数、和小数,整行都为数字,如:-23.42
^\-?\d+(\.\d+)?$
//匹配正数、负数、和小数,如:高2.32,大于-1,中的2.32、-1
\-?\d+(\.\d+)?
// 匹配1到9内的所有数字
[1-9]
// 匹配0-99的正整数
\d{1,2} 或 [0-9][0-9]?
// 匹配所有开头是5及以上的所有数字
[5-9][0-9]*
获取两个文字之间的所有内容,跨行
// 获取aa,bb与他们之间的所有内容
aa[\w\W]*?bb
或
aa[\d\D]*?bb
或
aa[\s\S]*?bb
其他常用
//匹配汉字
[\u4e00-\u9fa5]+
//匹配URL
[a-zA-z]+://[^\s]*
// IPv4
((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}
// Email
^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
//手机号
^(13[0-9]|14[5|7]|15[0|1|2|3|4|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
//身份证号
(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)
// 邮政编码
[1-9]\d{5}(?!\d)
// 密码,必须包含大小写字母和数字的组合,可以使用特殊字符,长度在8-10之间
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
// 日期 yyyy:MM:dd
^\d{4}-\d{1,2}-\d{1,2}
java应用
判断
public static void main(String args[]){
String content = "-23.45";
String pattern = "^\\-?\\d+(\\.\\d+)?$";
boolean isMatch = Pattern.matches(pattern, content);
System.out.println("字符串中是否是数字? " + isMatch);
}
检索
public static void main(String args[]){
String line = "长方体高2.45米,宽1米,位于海拔-100米";
//查找所有数字,正数、负数、和小数
String pattern = "\\-?\\d+(\\.\\d+)?";
Pattern r = Pattern.compile(pattern);
Matcher matcher = r.matcher(line);
while (matcher.find()) {
String res = matcher.group();
System.out.println(res);
}
}