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

439. Java 正则表达式 - 字符串字面量与元字符

文章目录

  • 439. Java 正则表达式 - 字符串字面量与元字符
    • 1. 字符串字面量匹配(String Literals)
      • 🌰 示例
      • 🌰 连续匹配的例子
    • 2. 元字符(Metacharacters)
      • 🌰 示例:`.`(点号)
      • Java 正则里的元字符列表
    • 3. 如何匹配“普通的元字符”
    • 4. 小结 ✅
    • 🎤QA

439. Java 正则表达式 - 字符串字面量与元字符

1. 字符串字面量匹配(String Literals)

正则表达式最基础的功能就是匹配一个固定的字符串
👉 如果正则表达式是"foo",输入字符串也是"foo",匹配就会成功。

🌰 示例

publicstaticvoidmain(String[]args){java.util.Scannerscanner=newjava.util.Scanner(System.in);System.out.println("\n=== 正则表达式交互式测试 ===");System.out.println("提示: 输入 'quit' 退出程序\n");while(true){System.out.print("Enter your regex: ");StringregexInput=scanner.nextLine();if("quit".equalsIgnoreCase(regexInput)){System.out.println("程序已退出");break;}try{PatternuserPattern=Pattern.compile(regexInput);System.out.print("Enter input string to search: ");StringinputString=scanner.nextLine();MatcheruserMatcher=userPattern.matcher(inputString);booleanfound=false;while(userMatcher.find()){found=true;System.out.printf("I found the text \"%s\" starting at index %d and ending at index %d.%n",userMatcher.group(),userMatcher.start(),userMatcher.end());}if(!found){System.out.println("No match found.");}}catch(Exceptione){System.out.println("正则表达式错误: "+e.getMessage());}System.out.println();// 空行分隔}scanner.close();}
Enteryour regex:fooEnterinput stringtosearch:fooIfound the text foo starting at index0and ending at index3.

这里有几个细节:

  • 输入"foo"长度是 3,但结果显示:
    • start index = 0
    • end index = 3
  • 为什么?因为正则里的索引范围是:
    • 起始索引 inclusive(包含)
    • 结束索引 exclusive(不包含)

👉 用一个图来帮助理解:

String:f o oIndex:0123
  • "foo"实际占用的是 0, 1, 2 三个单元格
  • 但结束索引指向 3(相当于最后一个字符的“后面”)

🌰 连续匹配的例子

Enteryour regex:fooEnterinput stringtosearch:foofoofooIfound the text foo starting at index0and ending at index3.Ifound the text foo starting at index3and ending at index6.Ifound the text foo starting at index6and ending at index9.

👉 可以看到,下一个匹配的开始位置就是上一个匹配的结束位置。这就是正则引擎的匹配机制。


2. 元字符(Metacharacters)

正则表达式并不仅仅是匹配固定字符串,它有一组特殊字符(metacharacters),能让匹配变得更灵活。

🌰 示例:.(点号)

如果正则表达式是"cat.",输入字符串是"cats",结果如下:

Enteryour regex:cat.Enterinput stringtosearch:catsIfound the text cats starting at index0and ending at index4.

👉 注意:虽然输入中没有写.,但匹配依然成功。
原因是:.是一个元字符,表示任意单个字符
所以"cat."可以匹配:

  • "cats"
  • "cata"
  • "cat!"
  • "cat?"
    等等。

Java 正则里的元字符列表

<([{\^-=$!|]})?*+.>

这些符号在正则表达式里都有特殊含义。
👉 但注意:像@#这样的符号永远没有特殊含义,始终是普通字符。


3. 如何匹配“普通的元字符”

有时我们并不想让.当作“任意字符”,而是就想匹配一个真正的点号"."
👉 这时有两种方式:

  1. 用反斜杠\转义

    Patternp=Pattern.compile("cat\\.");Matcherm=p.matcher("This is a cat.");System.out.println(m.find());// true
    • "cat\\."表示匹配字面量字符串 “cat.”
    • 之所以要写两个\\,是因为在 Java 字符串里\也需要转义。
  2. \Q...\E引用区块

    Patternp=Pattern.compile("\\Qcat.\\E");Matcherm=p.matcher("This is a cat.");System.out.println(m.find());// true
    • \Q开始转义,直到\E结束。
    • 中间的所有字符都会被当作普通字符。
    • 所以"\\Qcat.\\E"等价于"cat\\."

4. 小结 ✅

  • 字符串字面量:正则"foo"匹配输入"foo"
  • 索引规则:开始索引包含,结束索引不包含
  • 元字符.表示任意单字符
  • 转义方法
    • \\转义(常见方式)
    • \Q...\E包裹

🎤QA

  • 让学员尝试写出一个能匹配"1+1=2"的正则(需要转义+=
  • 提问:".*"能匹配什么内容?
  • 提问:"foo.""foo\\."有什么区别?
http://www.jsqmd.com/news/1042036/

相关文章:

  • Qt+FFmpeg多路视频监控源码:支持硬解、分屏联动与实时CPU监控
  • 2026日喀则卫生间免砸砖防水、楼顶漏水、外墙渗水、地下室阳光房渗漏;正规防水补漏公司免费上门,线上质保,售后无忧。房屋漏水不再愁,24小时一站式快速维修。 - 企业资讯
  • 宁波佳利达汽配抽油器系列推荐:抽油泵/电动抽油筒/手动抽油器专业制造 - 品牌推荐官
  • 2026年行星减速机/齿轮减速马达厂家推荐:厦门东炜庭电机工业全系工控传动解决方案 - 品牌推荐官
  • ATBTLC1000蓝牙芯片移植实战:从BSP适配到GATT服务优化
  • 安阳宁鑫隆钢构厂推荐:装配式钢筋桁架楼承板等全系产品专业供应 - 品牌推荐官
  • 告别网盘限速:LinkSwift 一键直链下载全攻略
  • 代数循环与Lawson同调群:从基础到应用
  • MC68020协处理器接口:CIR寄存器与响应原语机制详解
  • 京保通保安服务有限公司:校园医院厂区商场多场景安保服务优选 - 品牌推荐官
  • 2026年工业树脂供应商推荐:山东森亚新材料氢化酚醛/聚α甲基苯乙烯等全系供应 - 品牌推荐官
  • 2026成都卫生间免砸砖防水、楼顶漏水、外墙渗水、地下室阳光房渗漏;正规防水补漏公司免费上门,线上质保,售后无忧。房屋漏水不再愁,24小时一站式快速维修。 - 企业资讯
  • 2026年6月最新欧米茄中国官方售后客服电话及服务网点地址查询 - 欧米茄服务中心
  • 孟州市行知塑业密胺餐具推荐:商用餐饮全场景解决方案供应商 - 品牌推荐官
  • TJA1145:汽车ECU低功耗休眠唤醒与CAN总线抗干扰设计实战
  • 郑州黄金回收避雷指南,认准合扬不被商家偷偷扣克重 - 奢侈品回收评测
  • 流匹配技术:从理论到工程实践
  • 安徽普瑞斯过滤科技推荐:龟背/全塑型/多级袋过滤器全系产品供应 - 品牌推荐官
  • 2026年Kafuter胶水系列推荐:上海岩旦机电科技提供篷布/密封胶全品类解决方案 - 品牌推荐官
  • 【UAV】从单环到串级:PID控制进阶与飞行器姿态稳定实战
  • i.MX51异步接口时序深度解析:从原理到寄存器配置实战
  • 郑州黄金回收水深别上当,合扬门店称重报价全透明 - 奢侈品回收评测
  • 2026年6月最新劳力士中国官方售后客服服务电话及地址网点大全 - 劳力士服务中心
  • 2026年广州南方学院推荐:应用型本科教育标杆,学科建设成果显著 - 品牌推荐官
  • 泰安岱岳区黄金回收实测:三家沿街实体店,明明白白不收隐形扣费 - 行行星
  • 2026年6月最新浪琴中国官方售后客户网点地址及热线电话 - 浪琴服务中心
  • 龙岩新罗区13年老牌租车服务推荐:鑫峰汽车主营豪车租赁、自驾商务租车全场景覆盖 - 品牌推荐官
  • 电费越交越肉疼?高耗能厂实测:光伏配储真能省出真金白银
  • 从冰河木马剖析C/S架构远程控制原理与纵深防御策略
  • 2026 北京奢二网奢侈品回收 大宗奢品企业合作回收方案2026 北京奢二网奢侈品回收 大宗奢品企业合作回收方案 - 讯息早知道