字符匹配

 

句点 (.) 匹配一个字符串中任何单个的打印或非打印字符,除了换行符 (\n) 之外。下面的 JScript 正则表达式可以匹配 'aac'、'abc'、'acc'、'adc'如此等等,同样也可以匹配 'a1c'、'a2c'、a-c'以及 a#c':

/a.c/

等价的 VBScript 正则表达式为:

"a.c"

如果试图匹配一个包含文件名的字符串,其中句点 (.) 是输入字符串的一部分,则可以在正则表达式中的句点前面加上一个反斜杠 (\) 字符来实现这一要求。举例来说,下面的 JScript 正则表达式就能匹配 'filename.ext':

/filename\.ext/

对 VBScript 而言,等价的表达式如下所示:

"filename\.ext"

这些表达式仍然是相当有限的。它们只允许匹配任何单字符。很多情况下,对从列表中匹配特殊字符十分有用。例如,如果输入文字中包含用数字表示为Chapter 1, Chapter 2诸如此类的章节标题,你可能需要找到这些章节标题。

括号表达式

可以在一个方括号 ([ 和 ]) 中放入一个或多个单字符,来创建一个待匹配的列表。如果字符被放入括号中括起来,则该列表称为括号表达式。括号内和其他任何地方一样,普通字符代表其本身,也就是说,它们匹配输入文字中出现的一处自己。大多数特殊字符在位于括号表达式中时都将失去其含义。这里有一些例外:

  • ']' 字符如果不是第一项,则将结束一个列表。要在列表中匹配 ']' 字符,请将其放在第一项,紧跟在开始的 '[' 后面。
  • '\' 仍然作为转义符。要匹配 '\' 字符,请使用 '\\'。

括号表达式中所包含的字符只匹配该括号表达式在正则表达式中所处位置的一个单字符。下面的 JScript 正则表达式可以匹配 'Chapter 1'、'Chapter 2'、'Chapter 3'、'Chapter 4' 以及 'Chapter 5':

/Chapter [12345]/

在 VBScript 中要匹配同样的章节标题,请使用下面的表达式:

"Chapter [12345]"

请注意单词 'Chapter' 及后面的空格与括号内的字符的位置关系是固定的。因此,括号表达式只用来指定满足紧跟在单词 'Chapter' 和一个空格之后的单字符位置的字符集合。这里是第九个字符位置。

如果希望使用范围而不是字符本身来表示待匹配的字符,则可以使用连字符将该范围的开始和结束字符分开。每个字符的字符值将决定其在一个范围内的相对顺序。下面的 JScript 正则表达式包含了一个等价于上面所示的括号列表的范围表达式。

/Chapter [1-5]/

VBScipt 中相同功能的表达式如下所示:

"Chapter [1-5]"

如果以这种方式指定范围,则开始和结束值都包括在该范围内。有一点特别需要注意的是,在 Unicode 排序中起始值一定要在结束值之前。

如果想在括号表达式中包括连字符,则必须使用下述方法之一:

  • 使用反斜杠将其转义:
    [\-]
  • 将连字符放在括号列表的开始和结束位置。下面的表达式能匹配所有的小写字母和连字符:
    [-a-z][a-z-]
  • 创建一个范围,其中开始字符的值小于连字符,而结束字符的值等于或大于连字符。下面两个正则表达式都满足这一要求:
    [!--][!-~]

同样,通过在列表开始处放置一个插入符(^),就可以查找所有不在列表或范围中的字符。如果该插入符出现在列表的其他位置,则匹配其本身,没有任何特殊含义。下面的 JScript 正则表达式匹配章节号大于 5 的章节标题:

/Chapter [^12345]/

对 VBScript 则使用:

"Chapter [^12345]"

在上面所示的示例中,表达式将匹配第九个位置处除1, 2, 3, 4, or 5 之外的任何数字字符。因此, 'Chapter 7' 为一个匹配,同样 'Chapter 9' 也是如此。

上面的表达式可以使用连字符 (-) 表示。对 JScript 为:

/Chapter [^1-5]/

或者,对 VBScript 为:

"Chapter [^1-5]"

括号表达式的典型用法是指定对任何大写或小写字母字符或任何数字的匹配。下面的 JScript 表达式给出了这一匹配:

/[A-Za-z0-9]/

等价的 VBScript 表达式为:

"[A-Za-z0-9]"

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索正则表达式
, 字符
, 表达式
, 括号
, 一个
, 正则表达式列表
, 匹配括号
, 括号匹配
连字符
字符串匹配、字符串匹配算法、字符匹配算法、正则表达式、kmp算法,以便于您获取更多的相关知识。

时间: 2024-07-31 11:39:32

字符匹配的相关文章

正则表达式简介(微软)--10.字符匹配

微软|正则 字符匹配 句点 (.) 匹配一个字符串中任何单个的打印或非打印字符,除了换行符 (\n) 之外.下面的 Visual Basic Scripting Edition 正则表达式可以匹配 'aac'.'abc'.'acc'.'adc'如此等等,同样也可以匹配 'a1c'.'a2c'.a-c'以及 a#c': /a.c/ 等价的 VBScript 正则表达式为: "a.c" 如果试图匹配一个包含文件名的字符串,其中句点 (.) 是输入字符串的一部分,则可以在正则表达式中的句点前

正则表达式教程之字符匹配

普通字符 普通字符由所有那些未显式指定为元字符的打印和非打印字符组成.这包括所有的大写和小写字母字符,所有数字,所有标点符号以及一些符号. 最简单的正则表达式是一个单独的普通字符,可以匹配所搜索字符串中的该字符本身.例如,单字符模式 'A' 可以匹配所搜索字符串中任何位置出现的字母 'A'.这里有一些单字符正则表达式模式的示例: /a/ /7/ /M/ 等价的 VBScript 单字符正则表达式为: "a" "7" "M" 可以将多个单字符组合在

php字符匹配代码

php教程字符匹配代码 /* 字符串A:"1,3,4,5,6,7,8,9,10,11,12,14,15,17,20,22,123,457", 例如我想知道这个字符串里面是否含有"2",这时候"12","20","22"等 */ //一 if(in_array('2',explode(',',$str))//二 $str= '1,3,4,5,6,7,8,9,10,11,12,14,15,17,20,22,12

go语言-正则表达式不让指定重复字符匹配,求高手解答

问题描述 正则表达式不让指定重复字符匹配,求高手解答 50C 正则表达式不让 指定字符串的 指定连续重复个数以上 通过比如:我指以数字组成定长度为10以内的字符串,指定不允许连续6个数字及以上通过1233444444 这个不让通过1433333332 这个不让通过1531224154 这个让通过4135353331 这个让通过要求:不用预查功能因为用的go语言,这种?! ?>= ?=影响效率语法不让通过服务器端写死的,只能用一个正则筛选.求高手解答. 解决方案 1{610}|2{610}|3{6

数据库匹配字段-根据输入字符匹配数据库字段

问题描述 根据输入字符匹配数据库字段 是这样的,我这里要做的是一个提问的功能,然后用户提问的时候需要选择话题,但是话题需要用户手动输入,然后匹配数据库的数据,类似于输入"保险"然后去找保险相关的字段值,但是我不太确定这个是要用 like匹配还是有其他方式 解决方案 对于数据库查询就是like ,当然可能现在nosql或者其他存储方式,可能会有不一样,具体看看开发文档吧 解决方案二: 你说的也可以实现,不过效率比较低,应该用全文索引. 解决方案三: 这个可以 i学stackoverflo

Java数据结构及算法实例:朴素字符匹配 Brute Force_java

/** * 朴素字符串算法通过两层循环来寻找子串, * 好像是一个包含模式的"模板"沿待查文本滑动. * 算法的思想是:从主串S的第pos个字符起与模式串进行比较, * 匹配不成功时,从主串S的第pos+1个字符重新与模式串进行比较. * 如果主串S的长度是n,模式串长度是 m,那么Brute-Force的时间复杂度是o(m*n). * 最坏情况出现在模式串的子串频繁出现在主串S中. * 虽然它的时间复杂度为o(m*n),但在一般情况下匹配时间为o(m+n), * 因此在实际中它被大量

VBS教程:正则表达式简介 -字符匹配_vbs

字符匹配 句点 (.) 匹配一个字符串中任何单个的打印或非打印字符,除了换行符 (\n) 之外.下面的 Visual Basic Scripting Edition 正则表达式可以匹配 'aac'.'abc'.'acc'.'adc'如此等等,同样也可以匹配 'a1c'.'a2c'.a-c'以及 a#c': /a.c/ 等价的 VBScript 正则表达式为: "a.c" 如果试图匹配一个包含文件名的字符串,其中句点 (.) 是输入字符串的一部分,则可以在正则表达式中的句点前面加上一个反

[算法系列之十二]字符串匹配之蛮力匹配

引言 字符串匹配是数据库开发和文字处理软件的关键.幸运的是所有现代编程语言和字符串库函数,帮助我们的日常工作.不过理解他们的原理还是比较重要的. 字符串算法主要可以分为几类.字符串匹配就是其中之一.当我们提到字符串匹配算法,最基本的方法就是所谓的蛮力解法,这意味着我们需要检查每一个文本串中的字符是否和匹配串相匹配.一般来说我们有文本串和一个匹配串(通常匹配串短于文本串).我们需要做的就是回答这个匹配串是否出现在文本串中. 概述 字符串蛮力匹配法的原理非常简单.我们必须检查匹配串的第一个字符与文本

中文匹配-bash中怎么匹配中文字符

问题描述 bash中怎么匹配中文字符 正则表达式[u4e00-u9fa5]在shell中为什么匹配不出中文,且在grep中报出grep:Invalid range end,我想在shell中匹配输入的中文该怎么做呢 解决方案 Bash 字符匹配正则匹配中文字符中文字符及其中文标点符号正则表达式匹配 解决方案二: 还要看bash是对中文如何编码的,不然没办法直接匹配.