正则表达式的语法

复制代码
    如果要想灵活的运用正则表达式,必须了解其中各种元素字符的功能,元字符从功能上大致分为:
复制代码
限定符
复制代码
选择匹配符
复制代码
分组组合和反向引用符
复制代码
特殊字符
复制代码
字符匹配符
复制代码
定位符

我们先说一下元字符的转义号

  • 元字符(Metacharacter)-转义号 \\

\\ 符号 说明:在我们使用正则表达式去检索某些特殊字符的时候,需要用到转义符号,否则检索不到结果,甚至会报错。

案例1:用去匹配"abc("会怎样?

案例2:用(去匹配"abc$("会这样?

再次提示:

在java中的正则表达式中,两个\\代表其他语言中的一个\

代码演示:

复制代码
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 分析java的正则表达式的语法(重要)
 */
public class RegGrammar {
  
  public static void main(String[] args) {
    String content = "abc$(abc(123(";
    // 匹配(
    String regStr = "\\(";
    Pattern pattern = Pattern.compile(regStr);
    Matcher matcher = pattern.matcher(content);

    while (matcher.find()) {
      System.out.println("找到:" + matcher.group(0));
    }
  }
}

运行结果:

需要用到转义符号的字符有以下:

. * + ( ) $ / \ ? [ ] ^ { }

  • 元字符-字符匹配符

备注:

在正则表达式中,?+* 是量词,用于指定匹配模式的重复次数。它们的区别如下:

  1. ?(问号):表示前面的元素在模式中可以出现零次或一次。换句话说,它表示前面的元素是可选的。

    例如:

    • ab? 匹配 "a" 或 "ab"。
    • a?b 匹配 "b" 或 "ab"。
  2. +(加号):表示前面的元素在模式中必须至少出现一次,但可以重复多次。

    例如:

    • ab+ 匹配 "ab"、"abb"、"abbb" 等,但不匹配 "a"。
    • a+b 匹配 "ab"、"aab"、"aaab" 等,但不匹配 "b"。
  3. *(星号):表示前面的元素在模式中可以出现零次或多次。

    例如:

    • ab* 匹配 "a"、"ab"、"abb"、"abbb" 等,包括空字符串。
    • a*b 匹配 "b"、"ab"、"aab"、"aaab" 等,包括空字符串。

总的来说,? 表示零次或一次,+ 表示至少一次,* 表示零次或多次。这些量词用于构建更灵活和强大的正则表达式模式,以适应不同的匹配要求。

相关推荐
雨中飘荡的记忆3 天前
正则表达式入门到实战
正则表达式
长城202410 天前
HTML5中表单的pattern属性解析
前端·正则表达式·html·html5·pattern·pattern属性·pattern正则表达式
Gss77710 天前
Linux 正则表达式详解(基础 + 扩展 + 实操)
linux·运维·正则表达式
黑客思维者10 天前
正则表达式(九)网络安全:检测SQL注入攻击 + 检测XSS跨站脚本 + 扫描敏感信息泄露 + 匹配暴力破解异常IP
sql·web安全·正则表达式
黎雁·泠崖10 天前
Java常用类核心详解(七):正则表达式 Regex 从入门到实战
java·开发语言·正则表达式
秀儿还能再秀10 天前
正则表达式核心语法 + Python的 re 库中常用方法
python·正则表达式
xcLeigh10 天前
Python入门:Python3 正则表达式全面学习教程
python·学习·正则表达式·教程·python3
数据知道11 天前
MongoDB 正则表达式查询:在 MongoDB 中实现模糊搜索与索引优化陷阱
数据库·mongodb·正则表达式
A懿轩A11 天前
【Java 基础编程】Java 正则表达式实战:Pattern/Matcher、元字符与常用正则,验证与提取必备
java·开发语言·正则表达式
石牌桥网管11 天前
正则表达式:匹配不包含指定字符串的文本
java·javascript·python·正则表达式·go·php