当前位置: 首页 > wzjs >正文

宿迁做网站优化郑州机械网站建设

宿迁做网站优化,郑州机械网站建设,做国外的网站,已备案域名购买网址低价1. 正则表达式概述 正则表达式(Regular Expression,简称 Regex)是一种用于匹配字符串的模式工具。在 Java 中,正则表达式通过 java.util.regex 包实现,主要涉及以下两个类: Pattern:表示一个编…

1. 正则表达式概述

正则表达式(Regular Expression,简称 Regex)是一种用于匹配字符串的模式工具。在 Java 中,正则表达式通过 java.util.regex 包实现,主要涉及以下两个类:

  • Pattern:表示一个编译好的正则表达式模式。
  • Matcher:用于在字符串中查找与模式匹配的内容。

正则表达式可以用来验证格式、提取信息或替换文本,例如检查邮箱地址是否合法、提取字符串中的数字、按规则分割字符串等。

2. 正则表达式符号速查表

以下是正则表达式的常用符号和元字符(以正则表达式的原始形式列出)。在 Java 代码中,符号如 \d 需要写成 \\d,因为 Java 字符串需要转义反斜杠。

2.1 基本字符和元字符

符号含义示例不匹配示例
\d匹配一个数字(0-9)5a
\D匹配一个非数字a5
\w匹配字母、数字或下划线a3_!
\W匹配非字母、数字或下划线!@a
\s匹配一个空白字符(如空格、制表符、换行符)\na
\S匹配一个非空白字符a1空白字符
.匹配任意字符(除换行符外)a1.\n

2.2 字符集合

字符集合用方括号 [] 表示,用于匹配单个字符。以下是详细说明:

符号含义示例不匹配示例
[abc]匹配单个字符,且该字符是 abcabcab(多字符)、d
[^abc]匹配单个字符,且该字符不是 abcd1abc
[a-z]匹配单个小写字母(a 到 z)bA1
[A-Z]匹配单个大写字母(A 到 Z)Ba1
[a-zA-Z]匹配单个字母(大小写均可)Ab1
[0-9]匹配单个数字(0 到 9)5a
[a-z&[def]]匹配单个字符,且该字符是 a 到 z 中且是 defdefab
[a-z&&[^bc]]匹配单个字符,且该字符是 a 到 z 但不是 bcadbc
[a-z&&[^m-p]]匹配单个字符,且该字符是 a 到 z 但不是 m 到 paqmn

说明[abc] 只匹配单个字符,不会匹配连续的字符串。例如:

  • 字符串 ab[abc] 会匹配 a(第一个字符),再匹配 b(第二个字符),但不能直接匹配整个 ab
  • 如果要匹配 ab,需要写成 ab(连续字符模式),而不是 [ab]

2.3 量词

量词用于指定匹配的次数:

符号含义示例不匹配示例
+匹配 1 次或多次\d+ 匹配 123空字符串
*匹配 0 次或多次\d* 匹配 12 或空
?匹配 0 次或 1 次\d? 匹配 1 或空12(多于 1 个)
{n}匹配正好 n 次\d{2} 匹配 121123
{n,}匹配至少 n 次\d{2,} 匹配 1231
{n,m}匹配 n 到 m 次\d{2,3} 匹配 1212311234

2.4 边界匹配

符号含义示例不匹配示例
^匹配字符串的开头^a 匹配 abc 的开头bac
$匹配字符串的结尾a$ 匹配 cba 的结尾abc
\b匹配单词边界\bword\b 匹配单独的 wordkeyword

3. 使用方法

Java 提供了两种主要方式来使用正则表达式:通过 PatternMatcher 类,或者直接使用 String 类的方法。

3.1 使用 PatternMatcher

步骤

  1. 使用 Pattern.compile() 创建正则表达式模式(注意转义)。
  2. 使用 Pattern.matcher() 创建一个匹配器。
  3. 使用 Matcher.find()Matcher.group() 查找并获取匹配结果。

示例代码:提取字符串中的所有数字,并展示字符集合的匹配。

import java.util.regex.Pattern;
import java.util.regex.Matcher;public class RegexDemo {public static void main(String[] args) {// 示例 1:提取数字String input = "Order: 123, Price: 456";Pattern pattern = Pattern.compile("\\d+"); // 正则表达式 \d+(匹配 1 个或多个数字)Matcher matcher = pattern.matcher(input);System.out.println("提取的数字:");while (matcher.find()) {System.out.println(matcher.group());}// 示例 2:字符集合 [abc] 的匹配String text = "ab";Pattern pattern2 = Pattern.compile("[abc]"); // 正则表达式 [abc](匹配单个 a、b 或 c)Matcher matcher2 = pattern2.matcher(text);System.out.println("\n字符集合 [abc] 匹配结果:");while (matcher2.find()) {System.out.println("匹配到的字符:" + matcher2.group());}}
}

运行结果

提取的数字:
123
456字符集合 [abc] 匹配结果:
匹配到的字符:a
匹配到的字符:b

说明:在字符串 ab 中,[abc] 每次只匹配一个字符,先匹配到 a,再匹配到 b,但它不会将 ab 作为一个整体匹配。

3.2 使用 String 类的方法

String 类提供了几种简便的方法:

  • matches():判断整个字符串是否完全匹配正则表达式。
    String text = "12345";
    boolean isNumber = text.matches("\\d+"); // 返回 true
    System.out.println("是否全为数字:" + isNumber);
    
  • replaceAll():替换所有匹配正则表达式的部分。
    String text = "abc123def456";
    String result = text.replaceAll("\\d+", "-"); // 结果:abc-def-
    System.out.println("替换数字后的结果:" + result);
    
  • split():按正则表达式分割字符串。
    String text = "a,b,c";
    String[] parts = text.split(","); // 结果:["a", "b", "c"]
    System.out.println("分割结果:" + java.util.Arrays.toString(parts));
    

4. 应用实例

4.1 验证邮箱地址

public class EmailValidation {public static void main(String[] args) {String email = "user@example.com";String emailPattern = "^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+$";if (email.matches(emailPattern)) {System.out.println("邮箱格式正确:" + email);} else {System.out.println("邮箱格式错误:" + email);}}
}

运行结果

邮箱格式正确:user@example.com

4.2 验证手机号码

public class PhoneValidation {public static void main(String[] args) {String phone = "13812345678";String phonePattern = "^1[3-9]\\d{9}$";if (phone.matches(phonePattern)) {System.out.println("手机号码格式正确:" + phone);} else {System.out.println("手机号码格式错误:" + phone);}}
}

运行结果

手机号码格式正确:13812345678

4.3 提取单词

public class WordExtraction {public static void main(String[] args) {String input = "Hello world, this is a test";Pattern pattern = Pattern.compile("\\b\\w+\\b"); // 正则表达式 \b\w+\b(匹配单词)Matcher matcher = pattern.matcher(input);while (matcher.find()) {System.out.println("找到的单词:" + matcher.group());}}
}

运行结果

找到的单词:Hello
找到的单词:world
找到的单词:this
找到的单词:is
找到的单词:a
找到的单词:test

4.4 验证连续字符

如果需要匹配连续的字符(如 ab),不能使用 [ab],而是直接写成 ab

public class SequenceMatch {public static void main(String[] args) {String input = "cabd";Pattern pattern = Pattern.compile("ab"); // 正则表达式 ab(匹配连续的 ab)Matcher matcher = pattern.matcher(input);while (matcher.find()) {System.out.println("找到的连续字符:" + matcher.group());}}
}

运行结果

找到的连续字符:ab

5. 注意事项

  • 性能优化:避免在循环中重复调用 Pattern.compile(),建议将 Pattern 对象定义为静态变量。
  • 转义规则:正则表达式中的特殊字符(如 .+)需要转义,在 Java 中需要双重转义,例如正则表达式 \. 要写成 \\.

文章转载自:

http://kH4iScwR.rhjsx.cn
http://mOITRjO3.rhjsx.cn
http://GIj94DuB.rhjsx.cn
http://NsRq8Q5c.rhjsx.cn
http://OiOZGvdF.rhjsx.cn
http://mpB7GV04.rhjsx.cn
http://MgE5mU9I.rhjsx.cn
http://vVrKND9I.rhjsx.cn
http://6kfKotOn.rhjsx.cn
http://lNpNB5TD.rhjsx.cn
http://NX2O2d8p.rhjsx.cn
http://VIM0b55x.rhjsx.cn
http://jo6PKitm.rhjsx.cn
http://vx8Qu54V.rhjsx.cn
http://0haIYKjx.rhjsx.cn
http://I9NUb3Ll.rhjsx.cn
http://Kpo5uJal.rhjsx.cn
http://DQeuqNj9.rhjsx.cn
http://4a2ZFEQw.rhjsx.cn
http://K8nFxjT9.rhjsx.cn
http://CBuOPAvl.rhjsx.cn
http://OT5l4hZg.rhjsx.cn
http://yGwsnhPz.rhjsx.cn
http://3pPNZ9qZ.rhjsx.cn
http://FPRt0nJM.rhjsx.cn
http://6XNerU6F.rhjsx.cn
http://tFJ06QdF.rhjsx.cn
http://NFQmckhP.rhjsx.cn
http://fkp3Gd4g.rhjsx.cn
http://KfRqDcX2.rhjsx.cn
http://www.dtcms.com/wzjs/714630.html

相关文章:

  • 公司管理网站首页高清海报素材网
  • 新手做网站最简单流程抖音代运营服务内容及合作套餐
  • wordpress 帮助手册随州seo推广
  • 邵阳建网站多少钱长沙企业网站建设案例
  • 单位网站建设维护情况报告优化关键词的方法包括
  • 口碑好的品牌网站建设石家庄网站建设登录
  • 淄博网站设计制作ps网站设计概述
  • 高端网站设计开发自己做微信优惠券需要网站
  • 做网站必须要注册公司么嘉兴类网站系统总部
  • 个人电台网站模版建站服务网络公司
  • 全国网站建设企业seo接单一个月能赚多少钱
  • 如何规范使用静态网站怎么用百度云做网站空间
  • 微网站 下载网站开发需要文章写的好吗
  • 网站做平台学做网站是什么专业
  • 在线短视频网站开发费用三个字公司名字聚财
  • 徐州集团网站建设流程视频购物网站开发方案
  • 自助微信网站品牌策划方案怎么写
  • 浦东新区建设工程安全质量监督站网站php购物商城源码
  • 字牌标识公司网站网站编号 6019网站构建是什么
  • 一个主机放几个网站路由器建wordpress
  • 国家摄影网站crm客户关系管理平台
  • 青岛网站推广企业专门做试题的网站
  • 深圳网站制作公司哪家好北京专业网站制作流程优势
  • 网站转应用dedecms 网站地图 模板
  • 河南郑州广告公司网站建设滕州市建设网站
  • 仿木鱼网络网站施工企业怎样报考a证
  • 成都市建设路小学网站商企在线营销型网站
  • 国际商业网站松江区网站建设
  • 万能搜索引擎网站上海网站建设公司官网
  • 石家庄长安区网站建设公司电脑做网站服务器改端口