加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式

发布时间:2020-12-13 23:10:20 所属栏目:百科 来源:网络整理
导读:package regexExample; /** * 正则表达式:符合一定规则的表达式 * 1.用来专门操作字符串 * 2.用一些特定的符号来表示一些代码操作,以达到简化代码的书写 * 3.具体操作功能: * 匹配: Stirng matches()方法:用规则去陪整个字符串,只要有一处匹配不成功,


package regexExample;
/**
* 正则表达式:符合一定规则的表达式
* 1.用来专门操作字符串
* 2.用一些特定的符号来表示一些代码操作,以达到简化代码的书写
* 3.具体操作功能:
* 匹配:Stirng matches()方法:用规则去陪整个字符串,只要有一处匹配不成功,就返回false
* matches()方法用的时候注意:
* 用字符串去匹配规则 str.matches(regex);
* 不是用规则去匹配字符串 regex.matches(str)。
* 切割:String split();
* //如果要把规则封装成一个组用()来完成,组的出现都是有编号的,
//从1开始,想要使用已有的组,可以通过n(n就是组的编号)的形式来获取
正则表达式的缺点:
正则越长,阅读性越差
* 构造 匹配
字符
x 字符 x
反斜线字符
n 带有八进制值 0 的字符 n (0 <= n <= 7)
nn 带有八进制值 0 的字符 nn (0 <= n <= 7)
mnn 带有八进制值 0 的字符 mnn(0 <= m <= 3、0 <= n <= 7)
xhh 带有十六进制值 0x 的字符 hh
uhhhh 带有十六进制值 0x 的字符 hhhh
t 制表符 ('u0009')
n 新行(换行)符 ('u000A')
r 回车符 ('u000D')
f 换页符 ('u000C')
a 报警 (bell) 符 ('u0007')
e 转义符 ('u001B')
cx 对应于 x 的控制符
字符类
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)
预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
d 数字:[0-9]
D 非数字: [^0-9]
s 空白字符:[ tnx0Bfr]
S 非空白字符:[^s]
w 单词字符:[a-zA-Z_0-9]
W 非单词字符:[^w]
POSIX 字符类(仅 US-ASCII)
p{Lower} 小写字母字符:[a-z]
p{Upper} 大写字母字符:[A-Z]
p{ASCII} 所有 ASCII:[x00-x7F]
p{Alpha} 字母字符:[p{Lower}p{Upper}]
p{Digit} 十进制数字:[0-9]
p{Alnum} 字母数字字符:[p{Alpha}p{Digit}]
p{Punct} 标点符号:!"#$%&'()*+,-./:;<=>?@[]^_`{|}~
p{Graph} 可见字符:[p{Alnum}p{Punct}]
p{Print} 可打印字符:[p{Graph}x20]
p{Blank} 空格或制表符:[ t]
p{Cntrl} 控制字符:[x00-x1Fx7F]
p{XDigit} 十六进制数字:[0-9a-fA-F]
p{Space} 空白字符:[ tnx0Bfr]
java.lang.Character 类(简单的 java 字符类型)
p{javaLowerCase} 等效于 java.lang.Character.isLowerCase()
p{javaUpperCase} 等效于 java.lang.Character.isUpperCase()
p{javaWhitespace} 等效于 java.lang.Character.isWhitespace()
p{javaMirrored} 等效于 java.lang.Character.isMirrored()
Unicode 块和类别的类
p{InGreek} Greek 块(简单块)中的字符
p{Lu} 大写字母(简单类别)
p{Sc} 货币符号
P{InGreek} 所有字符,Greek 块中的除外(否定)
[p{L}&&[^p{Lu}]] 所有字母,大写字母除外(减去)
边界匹配器
^ 行的开头
$ 行的结尾
b 单词边界
B 非单词边界
A 输入的开头
G 上一个匹配的结尾
Z 输入的结尾,仅用于最后的结束符(如果有的话)
z 输入的结尾
Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
Reluctant 数量词
X?? X,一次或一次也没有
X*? X,零次或多次
X+? X,一次或多次
X{n}? X,恰好 n 次
X{n,}? X,至少 n 次
X{n,m}? X,至少 n 次,但是不超过 m 次
Possessive 数量词
X?+ X,一次或一次也没有
X*+ X,零次或多次
X++ X,一次或多次
X{n}+ X,恰好 n 次
X{n,}+ X,至少 n 次
X{n,m}+ X,至少 n 次,但是不超过 m 次
Logical 运算符
XY X 后跟 Y
X|Y X 或 Y
(X) X,作为捕获组
Back 引用
n 任何匹配的 nth 捕获组
引用
Nothing,但是引用以下字符
Q Nothing,但是引用所有字符,直到 E
E Nothing,但是结束从 Q 开始的引用
特殊构造(非捕获)
(?:X) X,作为非捕获组
(?idmsux-idmsux) Nothing,但是将匹配标志i d m s u x on - off
(?idmsux-idmsux:X) X,作为带有给定标志 i d m s u x on - off
的非捕获组 (?=X) X,通过零宽度的正 lookahead
(?!X) X,通过零宽度的负 lookahead
(?<=X) X,通过零宽度的正 lookbehind
(?<!X) X,通过零宽度的负 lookbehind
(?>X) X,作为独立的非捕获组

*
* */
public class RegexDemo {

/**
* @param args
*/
public static void main(String[] args) {
//匹配手机号段13x 15x 18x
String str ="13922222111";
String reg = "[1][358][0-9]{9}";
//System.out.println(str.matches(reg));
//匹配邮箱
String mail="[a-z][a-z_0-9]{5,20}@[a-z0-9]{3}.com";
String str1 = "yao2222@163.com";
System.out.println(str1.matches(mail));
//切割
//如果要把规则封装成一个组用()来完成,组的出现都是有编号的,
//从1开始,想要使用已有的组,可以通过n(n就是组的编号)的形式来获取
}

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读