首页 web前端 js教程 正则怎样写才能匹配一组字符

正则怎样写才能匹配一组字符

Mar 30, 2018 am 09:51 AM
匹配 天赋

这次给大家带来正则怎样写才能匹配一组字符,正则匹配一组字符的注意事项有哪些,下面就是实战案例,一起来看一下。

本文实例讲述了正则表达式教程之匹配一组字符的方法。分享给大家供大家参考,具体如下:

注:在所有例子中正则表达式匹配结果包含在源文本中的之间,有的例子会使用Java来实现,如果是java本身正则表达式的用法,会在相应的地方说明。所有java例子都在JDK1.6.0_13下测试通过。

一、匹配多个字符中的某一个

在上一篇《正则表达式教程之匹配单个字符详解》中的一个匹配以na或sa开头的文本文件例子中,使用的正则表达式是.a.\.txt。如果还有一个文件是cal.txt,那么也将会被匹配到。如果只想要匹配na或sa开头的文件,该怎么办呢?

既然只想找出n或s,使用可以匹配任何字符的.显然是不行的。在正则表达式中,我们可以使用[和]来定义一个字符集合,在使用[和]来定义的字符集合里,这两个元字符之间的所有字符都是该集合的组成部分,字符集合的匹配结果是能够与该集合里的任何一个成员相匹配的的文本。

来看一个和上一篇相似一个例子:

文本:

sales.txt

na1.txt

na2.txt

sa1.txt

sanatxt.txt

cal.txt

正则表达式:[ns]a.\.txt

结果:

sales.txt

【na1.txt】

【na2.txt】

【sa1.txt】

sanatxt.txt

cal.txt

分析:这里使用的正则表达式是以[na]开头,这个集合将匹配字符n或s,不会匹配其他任何字符。[和]不匹配任何字符,它们只负责定义一个字符集合。接下来a匹配一个字符a,\.将匹配一个.字符本身,txt匹配txt字符本身,匹配结果与我们预期的一致。

但是,如果文件中如果有一个文件是usa1.txt,那么它也会被匹配出来。这是位置匹配的问题,在后面将会讨论到。

二、使用字符集合区间

上面的例子中,如果我们只想匹配以na或sa开头,后面跟一个数字的文件怎么办?正则表达式[ns]a.\.txt中,.将会匹配到任意一个字符,包括数字。这个问题可以使用字符集合来解决:

sales.txt

na1.txt

na2.txt

sa1.txt

san.txt

sanatxt.txt

cal.txt

正则表达式:[ns]a[0123456789]\.txt

结果:

sales.txt

【na1.txt】

【na2.txt】

【sa1.txt】

san.txt

sanatxt.txt

cal.txt

分析:从结果可以看到,我们只匹配出来以na或sa开头,后面跟一个数字的文件,而san.txt没有被匹配出来,因为使用了字符集合[0123456789]来限定第三个字符只能是数字。

在正则表达式中,会很频繁的使用到一些字符区间,比如0-9,a-z等等,为了简化字符区间的定义,正则表达式提供了一个特殊的元字符-来定义字符区间。像上面这个例子,我们可以使用正则表达式来匹配:[ns]a[0-9]\.txt,结果与上面完全一样。

字符区间不仅限于数字,像下面这些都是合法的字符区间:

[A-F]:匹配从A到F的所有大写字母。

[A-Z]:匹配从A到Z的所有大写字母。

[A-z]:匹配从ASCII字符A到ASCII字符z的所有字母。但这个区间一般不会用到,只是举例说明。因为它们之间还包含着[和^等在ASCII中排列在Z和a之间的字符。

字符区间的首尾字符可以是ASCII字符列表中的任意字符。但在实际使用中,最常用的还是数字和字母字符区间。

注意:在定义字符区间的时候,不能让区间的尾字符小于首字符(如[9-0]),这是不允许的。-作为元字符只能出现在[和]之间,如果在[和]之外的任何地方,它只是一个普通的字符,只会与-本身匹配。

在同一个字符集合中可以给出多个字符区间,比如:[0-9a-zA-Z]将匹配任意一个大小写字母和数字。

来看一下匹配网页中颜色的例子:

文本:

<span style="background-color:#3636FF;height:30px; width:60px;">测试</span>
登录后复制

正则表达式:#[0-9A-Fa-f] [0-9A-Fa-f] [0-9A-Fa-f] [0-9A-Fa-f] [0-9A-Fa-f] [0-9A-Fa-f]

结果:【#3636FF】;height:30px; width:60px;">测试

分析:在网页中,颜色一般表示为一个以#开头的RGB值,R代表红色,G代表绿色,B代表蓝色,任何一种颜色都可以通过RGB的不同组合调和出来。RGB值用16进值表示,如#000000代表白色,#FFFFFF代表黑色,#FF0000代表红色。所以网页中匹配颜色的正则表达式是以#开头,后面跟6个相同的[0-9A-Fa-f]字符集合(这可以简写成#[0-9A-Fa-f]{6},会在后面的重复匹配中讨论到)。

三、取非匹配

字符集合通常用来指定一组必须匹配其中之一的字符,但在某些场合,我们需要反过来做,给出一组不需要得到的字符,换句话说,除了在那个字符集合中的字符,其他的任意字符都可以匹配。

比如,要匹配以na或sa开头,后面跟的不是数字的文件:

文本:

sales.txt

na1.txt

na2.txt

sa1.txt

sanatxt.txt

san.txt

正则表达式:[ns]a[^0-9]\.txt

结果:

sales.txt

na1.txt

na2.txt

sa1.txt

sanatxt.txt

【san.txt】

分析:这个例子使用的模式正好与前面的相反,前面[0-9]只匹配数字,而这里[^0-9]匹配的是非数字。

注意:^在[和]之间表示取非,如果出现在正则表达式的开头,表示位置匹配匹配了,这将在后面讨论到。同时,^的效果将作用于给定字符集合里的所有字符或字符区间,而不仅限于紧跟在^字符后面的那一个字符或字符区间。如[^0-9a-z]表示不匹配任何数字或小写字母。

四、小结

元字符[和]用于定义一个字符集合,其含义是必须与该集合里的字符之一匹配。定义一个字符集合的方法有两种:一是把所有的字符都列举出来;二是利用元字符-以字符区间的方式给出。字符集合可以使用元字符^来取非,这将把给定的字符集合强行排除在匹配操作外,除了该字符集合里的字符,其他字符都可以匹配。

在接下来的文章中,我们将会讨论正则表达式中的一些元字符的使用。

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

JS的密码强度校验正则表达式(附代码)

在JQ中正则验证不能含有中文的方法

以上是正则怎样写才能匹配一组字符的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
威尔R.E.P.O.有交叉游戏吗?
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Go语言正则表达式实践指南:如何匹配十六进制颜色代码 Go语言正则表达式实践指南:如何匹配十六进制颜色代码 Jul 13, 2023 am 10:46 AM

Go语言正则表达式实践指南:如何匹配十六进制颜色代码引言:正则表达式是一种强大且灵活的工具,用于字符串的模式匹配和查找。在Go语言中,我们可以使用内置的正则表达式包regexp来实现这些操作。本文将介绍如何使用正则表达式在Go语言中匹配十六进制颜色代码。导入正则表达式包首先,我们需要导入Go语言的正则表达式包regexp。可以在代码的开头添加如下导入语句:i

PHP正则表达式实战:匹配字母和数字 PHP正则表达式实战:匹配字母和数字 Jun 22, 2023 pm 04:49 PM

PHP正则表达式实战:匹配字母和数字正则表达式是一种用于匹配字符串的工具,可以方便地实现字符串的搜索、替换、分割等操作。在PHP开发中,正则表达式也是一个非常有用的工具。本文将介绍如何使用PHP正则表达式来匹配字母和数字。匹配单个字符要匹配单个字符,可以使用正则表达式中的字符类。字符类用方括号[]表示,其中的字符表示可以被匹配的字符,可以使用连字符-表示范围

PHP正则表达式:精确匹配与排除模糊包含 PHP正则表达式:精确匹配与排除模糊包含 Feb 28, 2024 pm 01:03 PM

PHP正则表达式:精确匹配与排除模糊包含正则表达式是一种强大的文本匹配工具,能够帮助程序员在处理文本时进行高效的搜索、替换和筛选。在PHP中,正则表达式也被广泛应用于字符串处理和数据匹配中。本文将重点介绍在PHP中如何进行精确匹配和排除模糊包含的操作,同时结合具体的代码示例进行说明。精确匹配精确匹配意味着只匹配符合完全条件的字符串,不匹配任何变种或包含额外字

PHP字符串匹配技巧:避免模糊包含表达式 PHP字符串匹配技巧:避免模糊包含表达式 Feb 29, 2024 am 08:06 AM

PHP字符串匹配技巧:避免模糊包含表达式在PHP开发中,字符串匹配是一个常见的任务,通常用于查找特定的文本内容或验证输入的格式。然而,有时候我们需要避免使用模糊的包含表达式来确保匹配的准确性。本文将介绍一些在PHP中进行字符串匹配时避免模糊包含表达式的技巧,并提供具体的代码示例。使用preg_match()函数进行精确匹配在PHP中,可以使用preg_mat

绝地潜兵2怎么匹配 绝地潜兵2怎么匹配 Feb 27, 2024 pm 08:43 PM

绝地潜兵2是一款拥有高质量大作玩法打造的第三人称的射击游戏,拥有大量精彩的玩法可让小伙伴去探索联机射击战斗的操作趣味,游戏中的联机模式是可以匹配的,一些玩家还不清楚该如何去操作匹配,本期为大家分享匹配的步骤!绝地潜兵2匹配操作教程答:在星球界面点击快速匹配。绝地潜兵2匹配方法绝地潜兵2的快速匹配是一个很不错的功能,能帮玩家找到一起匹配的队友,共同进入一场任务,相互配合获取更高的任务评价。匹配的选项在星球界面,在找任务或者看公开房间的时候,下方会有一个快速匹配,点击就能开始匹配。如果玩家打开了跨平

PHP 正则表达式:如何匹配 HTML 中的所有 textarea 标签 PHP 正则表达式:如何匹配 HTML 中的所有 textarea 标签 Jun 22, 2023 pm 09:27 PM

HTML是一种常用的页面标记语言,用于在网页中展示内容。在HTML中,textarea标签被用于创建文本框,允许用户输入或编辑文本。当你需要从页面中提取所有的textarea标签及其内容时,PHP正则表达式可以提供一个简单有效的解决方案。在本文中,我们将学习如何使用PHP正则表达式匹配HTML中的所有textarea标签。理解正则表

Java中的类型不匹配——java.lang.ClassCastException Java中的类型不匹配——java.lang.ClassCastException Jun 24, 2023 pm 09:30 PM

Java作为一门强类型语言,在编译时就要求变量的类型必须明确确定下来,这在一定程度上保证了程序的安全性。但是有时候,在运行时,我们可能会遇到类型转换异常——java.lang.ClassCastException,这种异常会在Java程序中出现,当程序试图将一个对象转换为一个不兼容的类型时,就会抛出该异常。Java.lang.ClassCastExcepti

如何在 PHP 中使用正则表达式来匹配多个连续的特定字符 如何在 PHP 中使用正则表达式来匹配多个连续的特定字符 Jun 22, 2023 pm 08:15 PM

正则表达式是一种强大的文本处理工具,它在PHP中有着广泛的应用。其中一个常见的用法是匹配多个连续的特定字符,比如匹配多个连续的空格、多个连续的逗号等。本文将介绍如何在PHP中使用正则表达式来实现这一功能。在PHP中,我们可以使用preg_match()函数来进行正则表达式的匹配。该函数需要传入两个参数:正则表达式和待匹配的字符串。如果匹配成功

See all articles