Java学习:正则表达

正则表达基本

  正则表达式是Java提供的一种专门用于字符串执行模式匹配的技术。

正则表达式:
	regular expression=>RegExp

代码演示

public static void main(String[] args) {
   
    // 定义一个字符串变量,并初始化为 "123abc"
    String content = "123abc";

    // 定义一个字符串变量,表示要匹配的正则表达式
    // 此表达式要求字符串以至少一个数字开头,后跟任意个小写字母
    String regstr = "[0-9]+[a-z]*";

    // 使用 Pattern 类的 compile 方法编译正则表达式
    Pattern pattern = Pattern.compile(regstr);

    // 使用 Matcher 类的 matcher 方法创建匹配器对象,并将其与 content 进行匹配
    Matcher matcher = pattern.matcher(content);

    // 使用 while 循环遍历匹配结果
    while (matcher.find()) {
   
        // 输出匹配到的内容
        System.out.println("=" + matcher.group(0));
    }
}

正则表达语法

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

转义号 \\

  在正则表达式中,有一些特殊字符具有特定的含义和功能。当需要在正则表达式中使用这些特殊字符本身的字面意义时,需要使用转义符号 \\

符号 符号含义
\\. 匹配 . 本身
\\* 匹配 * 本身
\\+ 匹配 + 本身
\\( \\) 匹配 () 本身
\\$ 匹配 $ 本身
\\ / 匹配 / 本身
\\ 匹配 \ 本身,字符串中表示一个反斜杠
\\? 匹配 ? 本身
\\[ \\] 匹配 [ ] 本身
\\^ 匹配 ^ 本身
\\{ \\} 匹配 {} 本身
注意:在Java的正则表达式中,两个 \\ 代表其他语言中的一个 \

字符匹配

符号 符号含义 示例 解释
[ ] 可接收的字符列表 [efgh] e、f、g、h中的任意1个字符
[^] 不接收的字符列表 [ ^abc] 除a、b、c之外的任意1个字符,包括数字和特殊符号
- 连字符 A-Z 任意单个大写字母
. 匹配除 \n 以外的任何字符 a…b 以a开头,b结尾,中间包括2个任意字符的长度为4的字符串
\\d 匹配单个数字字符,相当于[0-9] \\d{3}(\\d)? 包含3个或4个数字的字符串
\\D 匹配单个非数字字符,相当于 [ ^ 0-9] \\D(\\d)* 以单个非数字字符开头,后接任意个数字字符串
\\w 匹配单个数字、大小写字母字符,相当于[0-9a-zA-Z) \\d{3}\\w{4} 以3个数字字符开头的长度为7的数字字母字符串
\\W 匹配单个非数字、大小写字母字符,相当于[ ^0-9a-zA-Z] \\W+\\d{2} 以至少1个非数字字母字符开头,2个数字字符结尾的字符串

选择匹配符

  在匹配某个字符串时需要选择,即:既可以匹配这个,又可以匹配那个,这时需
要用到选择匹配符号 |

符号 符号含义 示例 解释
| 匹配“|”之前或之后的表达式 ab|cd 匹配ab或者cd

限定符

  用于指定其前面的字符和组合项连续出现多少次

符号 符号含义 示例 解释
* 指定字符重复0次或n次(无要求)零到多次 (abc)* 仅包含任意个abc的字符串,等效于\w*
+ 指定字符重复1次或n次(至少一次)1到多 m+(abc)* 以至少1个m开头,后接任意个abc的字符串
? 指定字符重复0次或1次(最多一次)0到1 m+abc? 以至少1个m开头,后接abc或ab的字符串
{n} 只能输入n个字符 [abcd]{3} 匹配由abcd中字母组成的任意长度为3的字符串
{n,} 指定至少n个匹配 [abcd]{3,} 匹配由abcd中字母组成的任意长度不小于3的字符串
{n,m} 指定至少n个但不多于m
正则表达式善于处理文本,对匹配、搜索和替换等操作都有意想不到的作用。正因如此,正则表达式现在是作为程序员七种基本技能之一*,因此学习和使用它在工作中都能达到很高的效率。 正则表达式应用于程序设计语言中,首次是出现在 Perl 语言,这也让 Perl 奠定了正则表达式旗手的地位。现在,它已经深入到了所有的程序设计语言中,在程序设计语言中,正则表达式可以说是标准配置了。 Java 中从 JDK 1.4 开始增加了对正则表达式的支持,至此正则表达式成为了 Java 中的基本类库,使用时不需要再导入第三方的类库了。Java 正则表达式的语法来源于象征着正则表达式标准的 Perl 语言,但也不是完全相同的,具体的可以参看 Pattern 类的 API 文档说明。 我在一次偶然中发现了位于 java.sun.com 站点上的 Java Tutorial,也在那里看到了关于 Java正则表达式教程,感觉它不同于其他的正则表达式教程,文中以大量的匹配实例来进行说明。为了能让 Java 学习者能更好地使用正则表达式,就将其完整地译出了。该教程中所介绍的正则表达式应用仅仅是最为简单的(并没有完全地涉及到 Pattern 类支持的所有正则表达式语法,也没有涉及到高级的应用),适合于从未接触过或者是尚未完全明白正则表达式基础的学习者。在学习完该教程后,应该对正则表达式有了初步的了解,并能熟练地运用 java.util.regex 包中的关于正则表达式的类库,为今后学习更高级的正则表达式技术奠定良好的基础。 教程中所有的源代码都在 src 目录下,可以直接编译运行。由于当前版本的 Java Tutorial 是基于 JDK 6.0 的,因此其中的示例程序也用到了 JDK 6.0 中的新增类库,但正则表达式在 JDK 1.4 就已经存在了,为了方便大家使用,改写了部分的源代码,源代码类名中后缀为"V4"的表示用于 JDK 1.4 或以上版本,"V5"的表示用于 JDK 5.0 或以上版本,没有这些后缀的类在各个版本中均可以正常使用。 由于译者的水平和技术能力有限,译稿虽经多次校对,难免有疏漏之处,敬请大家批评和指正。若有发现不妥之处,请发送邮件至 [email protected],我会在 blog 中进行勘误,谢谢!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值