“正则表达式 元字符 字符匹配符”的版本间的差异
跳到导航
跳到搜索
Jihongchang(讨论 | 贡献) |
Jihongchang(讨论 | 贡献) |
||
第498行: | 第498行: | ||
− | === | + | === 示例:\\D 表示可以匹配不在 0-9 范围内的任意1个字符 === |
+ | <syntaxhighlight lang="java"> | ||
+ | import java.util.regex.Matcher; | ||
+ | import java.util.regex.Pattern; | ||
+ | |||
+ | public class RegExp03 { | ||
+ | |||
+ | public static void main(String[] args) { | ||
+ | |||
+ | String content = "a11c8abcABC"; | ||
+ | |||
+ | String regStr = "\\D"; //匹配不在 0-9 范围内的任意一个字符 | ||
+ | |||
+ | Pattern pattern = Pattern.compile(regStr); | ||
+ | |||
+ | Matcher matcher = pattern.matcher(content); | ||
+ | |||
+ | while (matcher.find()) { | ||
+ | |||
+ | System.out.println("找到:" + matcher.group(0)); | ||
+ | |||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | } | ||
+ | </syntaxhighlight><syntaxhighlight lang="console"> | ||
+ | 找到:a | ||
+ | 找到:c | ||
+ | 找到:a | ||
+ | 找到:b | ||
+ | 找到:c | ||
+ | 找到:A | ||
+ | 找到:B | ||
+ | 找到:C | ||
+ | </syntaxhighlight> |
2022年11月16日 (三) 05:42的版本
https://www.bilibili.com/video/BV1Eq4y1E79W/?p=7
符号 | 符号 | 示例 | 解释 | 匹配输入 |
---|---|---|---|---|
[] | 可接收的字符列表 | [efgh] | e、f、g、h中的任意1个字符 | |
[^] | 不接收的字符列表 | [^abc] | 除a、b、c之外的任意1个字符,包括数组和特殊符号 | |
- | 连字符 | A-Z | 任意单个大写字母 | |
. | 匹配除 \n 以外的任何字符 | a..b | 以a开头,b结尾,中间包括2个任意字符的长度为4的字符串 | aaab、aefb、a35b、a#*b |
\\d | 匹配单个数字字符,相当于[0-9] | \\d{3}(\\d)? | 包含3个或4个数字的字符串 | 123、9876 |
\\D | 匹配单个非数字字符,相当于[^0-9] | \\D(\\d)* | 以单个非数字字符开头,后接任意个数字字符串 | a、A342 |
\\w | 匹配单个数字、大小写字母字符,相当于[0-9a-zA-Z] | \\d{3}\\w{4} | 以3个数字字符开头的长度为7的数字字母字符串 | 234abcd、12345Pe |
\\W | 匹配单个非数字、大小写字母字符,相当于[^0-9a-zA-Z] | \\W+\\d{2} | 以至少1个非数字字母字符开头,2个数字字符结尾的字符串 | #29、#?@10 |
示例:\\d\\d\\d 等价与 \\d{3}
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 演示转义字符的使用
*/
public class RegExp02 {
public static void main(String[] args) {
String content = "abc.$)123";
//String regStr = "\\d\\d\\d";
String regStr = "\\d{3}";
Pattern pattern = Pattern.compile(regStr);
Matcher matcher = pattern.matcher(content);
while (matcher.find()) {
System.out.println("找到:" + matcher.group(0));
}
}
}
找到:123
https://www.bilibili.com/video/BV1Eq4y1E79W?p=8
示例:匹配 a-z 之间任意1个字符
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegExp03 {
public static void main(String[] args) {
String content = "a11c8";
String regStr = "[a-z]"; //匹配 a-z 之间任意1个字符
Pattern pattern = Pattern.compile(regStr);
Matcher matcher = pattern.matcher(content);
while (matcher.find()) {
System.out.println("找到:" + matcher.group(0));
}
}
}
找到:a
找到:c
示例:匹配 b-z 之间任意1个字符
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegExp03 {
public static void main(String[] args) {
String content = "a11c8";
String regStr = "[b-z]"; //匹配 b-z 之间任意1个字符
Pattern pattern = Pattern.compile(regStr);
Matcher matcher = pattern.matcher(content);
while (matcher.find()) {
System.out.println("找到:" + matcher.group(0));
}
}
}
找到:c
只要连接符“-”的 from < to,就可以
示例:匹配 A-Z 之间任意1个字符
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegExp03 {
public static void main(String[] args) {
String content = "a11c8";
String regStr = "[A-Z]"; //匹配 A-Z 之间任意1个字符
Pattern pattern = Pattern.compile(regStr);
Matcher matcher = pattern.matcher(content);
while (matcher.find()) {
System.out.println("找到:" + matcher.group(0));
}
}
}
控制台输出为空
示例:匹配 A-z 之间任意1个字符
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegExp03 {
public static void main(String[] args) {
String content = "Aa11c8z";
String regStr = "[A-z]"; //匹配 A-z 之间任意1个字符
Pattern pattern = Pattern.compile(regStr);
Matcher matcher = pattern.matcher(content);
while (matcher.find()) {
System.out.println("找到:" + matcher.group(0));
}
}
}
找到:A
找到:a
找到:c
找到:z
Java正则表达式默认区分字母大小写,如何实现不区分大小写?
- (?i)abc 表示abc都不区分大小写
- a(?i)bc 表示bc不区分大小写
- a((?i)b)c 表示只有b不区分大小写
- Pattern pattern = Pattern.compile(regStr, Pattern.CASE_INSENSITIVE);
示例:默认区分大小写
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegExp03 {
public static void main(String[] args) {
String content = "a11c8abcABC";
String regStr = "abc"; //匹配 abc 字符串[默认区分大小写]
Pattern pattern = Pattern.compile(regStr);
Matcher matcher = pattern.matcher(content);
while (matcher.find()) {
System.out.println("找到:" + matcher.group(0));
}
}
}
找到:abc
示例:(?i)abc
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegExp03 {
public static void main(String[] args) {
String content = "a11c8abcABC";
String regStr = "(?i)abc"; //匹配 abc 字符串[不区分大小写]
Pattern pattern = Pattern.compile(regStr);
Matcher matcher = pattern.matcher(content);
while (matcher.find()) {
System.out.println("找到:" + matcher.group(0));
}
}
}
找到:abc
找到:ABC
示例:Pattern.compile(regStr, Pattern.CASE_INSENSITIVE)
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegExp03 {
public static void main(String[] args) {
String content = "a11c8abcABC";
String regStr = "abc";
//当创建 Pattern 对象时,指定 Pattern.CASE_INSENSITIVE,表示匹配是不区分字母大小写的
Pattern pattern = Pattern.compile(regStr, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(content);
while (matcher.find()) {
System.out.println("找到:" + matcher.group(0));
}
}
}
找到:abc
找到:ABC
示例:[0-9]
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegExp03 {
public static void main(String[] args) {
String content = "a11c8abcABC";
String regStr = "[0-9]"; //匹配 0-9 之间任意一个字符
Pattern pattern = Pattern.compile(regStr);
Matcher matcher = pattern.matcher(content);
while (matcher.find()) {
System.out.println("找到:" + matcher.group(0));
}
}
}
找到:1
找到:1
找到:8
示例:[^a-z]
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegExp03 {
public static void main(String[] args) {
String content = "a11c8abcABC";
String regStr = "[^a-z]"; //匹配不在 a-z 之间任意一个字符
Pattern pattern = Pattern.compile(regStr);
Matcher matcher = pattern.matcher(content);
while (matcher.find()) {
System.out.println("找到:" + matcher.group(0));
}
}
}
找到:1
找到:1
找到:8
找到:A
找到:B
找到:C
示例:[^0-9]
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegExp03 {
public static void main(String[] args) {
String content = "a11c8abcABC";
String regStr = "[^0-9]"; //匹配不在 0-9 之间任意一个字符
Pattern pattern = Pattern.compile(regStr);
Matcher matcher = pattern.matcher(content);
while (matcher.find()) {
System.out.println("找到:" + matcher.group(0));
}
}
}
找到:a
找到:c
找到:a
找到:b
找到:c
找到:A
找到:B
找到:C
https://www.bilibili.com/video/BV1Eq4y1E79W?p=9
示例:[abcd]表示可以匹配abcd中的任意一个字符
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegExp03 {
public static void main(String[] args) {
String content = "a11c8abcABCy";
String regStr = "[abcd]"; //匹配在 abcd 中的任意一个字符
Pattern pattern = Pattern.compile(regStr);
Matcher matcher = pattern.matcher(content);
while (matcher.find()) {
System.out.println("找到:" + matcher.group(0));
}
}
}
找到:a
找到:c
找到:a
找到:b
找到:c
示例:\\D 表示可以匹配不在 0-9 范围内的任意1个字符
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegExp03 {
public static void main(String[] args) {
String content = "a11c8abcABC";
String regStr = "\\D"; //匹配不在 0-9 范围内的任意一个字符
Pattern pattern = Pattern.compile(regStr);
Matcher matcher = pattern.matcher(content);
while (matcher.find()) {
System.out.println("找到:" + matcher.group(0));
}
}
}
找到:a
找到:c
找到:a
找到:b
找到:c
找到:A
找到:B
找到:C