问号的几种用途
- 在字符串进行匹配,需要使用转义\?
- 量词,出现0次或者1次
- 非贪婪匹配,"a.c" vs "a.?c", 对于匹配字符串"abcabcabc",贪婪匹配结果:abcabcabc,非贪婪匹配结果:abc,
几种常见的非贪婪匹配
*? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复
- 不捕捉模式,/(?:bronto)(steak|burger)/,在分组括号左边加上?:,就只做分组,不占用捕捉变量,此时$1,就永远只可能是steak或burger
Java中的正则表达式
String wd = "低温 16 ℃";
Pattern pattern = Pattern.compile(".*?(\\d+).*");
Matcher matcher = pattern.matcher(wd);
matcher.matches();
System.out.println(matcher.group(0));
System.out.println(matcher.group(1));
低温 16 ℃
16
String wd = "低温 16 ℃ 99";
Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher(wd);
while (matcher.find()) {
System.out.println(matcher.group());
}
16
99
字符使用
正则表达式参考
- "\b" :不会消耗任何字符只匹配一个位置,常用于匹配单词边界 如 我想从字符串中"This is Regex"匹配单独的单词 "is" 正则就要写成 "\bis\b"
- \s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。注意 Unicode 正则表达式会匹配全角空格符。
- "\d": 匹配数字
- "\w":匹配字母,数字,下划线.
- "\W" 匹配任意不是字母,数字,下划线 的字符
- "\S" 匹配任意不是空白符的字符
- "\D" 匹配任意非数字的字符
- "\B" 匹配不是单词开头或结束的位置
网友评论