半亩花草 发表于 2024-9-10 01:11:45

正则表达式

正则表达式(Regular Expression, regex) 是一种用于匹配字符串的强大工具,广泛应用于文本查找、替换和验证操纵中。它通过特定的模式来形貌要匹配的文本。
1. 正则表达式的根本组成部分

字符类


[*]:匹配 a、b 或 c 中的任意一个字符。
[*][^abc]:匹配除 a、b、c 之外的任何字符(取反)。
[*]:匹配所有小写字母。
[*]:匹配所有大写字母。
[*]:匹配所有数字。
[*].(点号):匹配除换行符以外的任意单个字符。
元字符


[*]\d:匹配任意数字,等价于 。
[*]\D:匹配非数字字符,等价于 [^0-9]。
[*]\w:匹配字母、数字、下划线,等价于 。
[*]\W:匹配非字母、数字、下划线,等价于 [^a-zA-Z0-9_]。
[*]\s:匹配任何空白字符(包括空格、制表符、换行符)。
[*]\S:匹配任何非空白字符。
量词(指定匹配次数)


[*]*:匹配前面的字符 0 次或多次,例如 a* 匹配 0 个或多个 a。
[*]+:匹配前面的字符 1 次或多次,例如 a+ 匹配 1 个或多个 a。
[*]?:匹配前面的字符 0 次或 1 次,例如 a? 匹配 0 个或 1 个 a。
[*]{n}:匹配前面的字符恰恰 n 次,例如 a{3} 匹配 3 个 a。
[*]{n,}:匹配前面的字符至少 n 次,例如 a{2,} 匹配 2 个或更多 a。
[*]{n,m}:匹配前面的字符至少 n 次,至多 m 次,例如 a{2,4} 匹配 2 到 4 个 a。
边界匹配符


[*]^:匹配字符串的开头。例如,^a 匹配以 a 开头的字符串。
[*]$:匹配字符串的末端。例如,a$ 匹配以 a 末端的字符串。
[*]\b:匹配单词边界。例如,\bword\b 只匹配独立的 word。
[*]\B:匹配非单词边界。例如,\Bword\B 匹配不在边界上的 word。
分组与引用


[*](abc):将 abc 作为一个组。例如 (abc)+ 匹配一个或多个 abc。
[*]\1、\2 等:引用前面括号中的匹配结果。例如,(a)(b)\1\2 匹配 abab。
或运算


[*]a|b:匹配 a 或 b。例如,apple|orange 匹配 apple 或 orange。
2. 常用正则表达式示例

匹配一个有效的电子邮件地址

^+@+\.{2,}$

[*]^+:以字母、数字、点、下划线、百分号、加号、减号等字符开头,并匹配一个或多个这些字符。
[*]@+:匹配 @ 后的域名部分。
[*]\.{2,}$:匹配一个点后跟 2 个或更多的字母。
匹配电话号码(如:123-456-7890)

^\d{3}-\d{3}-\d{4}$

[*]\d{3}:匹配三个数字。
[*]-:匹配连字符。
[*]\d{4}:匹配四个数字。
匹配 IP 地址

^({1,3}\.){3}{1,3}$

[*]({1,3}\.){3}:匹配三段 1 到 3 个数字,后面跟一个点。
[*]{1,3}:匹配末了一段 1 到 3 个数字。
匹配 URL

^(https?|ftp)://[^\s/$.?#].[^\s]*$

[*]https?|ftp:匹配 http、https 或 ftp。
[*][^\s/$.?#]:匹配非空白字符或 /、.、$、?、# 等。
[*][^\s]*$:匹配路径部分,直到结束。
3. Java 中的正则表达式利用

在 Java 中,正则表达式常用于 String 类的 replaceAll()、matches()、split() 方法,或 Pattern 和 Matcher 类。
例1:利用 replaceAll 去除非字母字符

String text = "Hello, World!";
String result = text.replaceAll("[^a-zA-Z]", "");
System.out.println(result);// 输出:HelloWorld例2:验证电子邮件地址

String email = "example@test.com";
boolean isValid = email.matches("^+@+\\.{2,}$");
System.out.println(isValid);// 输出:true例3:利用 split() 分割字符串

String sentence = "This is a test.";
String[] words = sentence.split("\\s+");// 按空格分割
for (String word : words) {
    System.out.println(word);
}总结:

正则表达式是一个强大的文本处理工具,能够根据模式灵活匹配字符串。通过理解字符类、元字符、量词、分组和边界等,可以处理各种复杂的字符串匹配需求。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 正则表达式