ToB企服应用市场:ToB评测及商务社交产业平台
标题:
正则表达式
[打印本页]
作者:
半亩花草
时间:
2024-9-10 01:11
标题:
正则表达式
正则表达式(Regular Expression, regex)
是一种用于匹配字符串的强大工具,广泛应用于文本查找、替换和验证操纵中。它通过特定的模式来形貌要匹配的文本。
1.
正则表达式的根本组成部分
字符类
[abc]
:匹配 a、b 或 c 中的任意一个字符。
[^abc]
:匹配除 a、b、c 之外的任何字符(取反)。
[a-z]
:匹配所有小写字母。
[A-Z]
:匹配所有大写字母。
[0-9]
:匹配所有数字。
.(点号)
:匹配除换行符以外的任意单个字符。
元字符
\d
:匹配任意数字,等价于 [0-9]。
\D
:匹配非数字字符,等价于 [^0-9]。
\w
:匹配字母、数字、下划线,等价于 [a-zA-Z0-9_]。
\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.
常用正则表达式示例
匹配一个有效的电子邮件地址
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
复制代码
^[a-zA-Z0-9._%+-]+
:以字母、数字、点、下划线、百分号、加号、减号等字符开头,并匹配一个或多个这些字符。
@[a-zA-Z0-9.-]+
:匹配 @ 后的域名部分。
\.[a-zA-Z]{2,}$
:匹配一个点后跟 2 个或更多的字母。
匹配电话号码(如:123-456-7890)
^\d{3}-\d{3}-\d{4}$
复制代码
\d{3}
:匹配三个数字。
-
:匹配连字符。
\d{4}
:匹配四个数字。
匹配 IP 地址
^([0-9]{1,3}\.){3}[0-9]{1,3}$
复制代码
([0-9]{1,3}\.){3}
:匹配三段 1 到 3 个数字,后面跟一个点。
[0-9]{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("^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{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企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4