正则表达式模糊匹配:水平与垂直歧义详解

创始人
2024-12-15 03:37:18
0 次浏览
0 评论

正则表达式字符匹配

模糊匹配有两个“模糊”方向:水平模糊和垂直模糊。
水平二义性是指正则表达式能够匹配的字符串长度不固定,可以在不同的情况下存在。
其工作方式是使用量词。
例如,{m,n}表示连续出现至少m次,最多n次。
例如,/ab{2,5}c/表示匹配这样的字符串:第一个字符是“a”,后面是2到5个字符“b”,最后是字符“c”。
垂直歧义是指正则匹配字符串在遇到特定字符时可能不是特定字符,可能有多种可能性。
它的实现方式是使用字符组。
例如,[abc]表示该字符可以是“a”、“b”和“c”中的任意字符。
例如,/a[123]b/可以匹配以下三个字符串:“a1b”、“a2b”和“a3b”。
虽然称为字符组(字符类),但需要强调的是,它只是字符之一。
例如,[abc]表示匹配一个字符,可以是“a”、“b”、“c”之一。
例如,[123456abcdefGHIJKLM]可以写为[1-6a-fG-M]。
使用连字符-来省略和缩写。
比如要匹配“a”、“-”、“z”三个字符之一,就不能写成[a-z],因为可以写。
如下:[-az]或[az-]或[a\-z]。
即放在开头、结尾或跳过。
简而言之,不要只是让引擎认为它是区域代表。
垂直模糊匹配,另一个条件,某个字符可以是任何字符,但不能是“a”、“b”或“c”。
例如,[^abc]表示除“a”、“b”和“c”之外的任何字符。
属性组中的第一个字符是^(插入符号),它表示否定的概念。
\d是[0-9]。
代表一个数字。
记忆法:它的英文名称是Digit(数字)。
\D是[^0-9]。
代表除数字之外的任何字符。
\w是[0-9a-zA-Z_]。
代表数字、大小写字母和下划线。
符号:w是word的缩写,也称为单词字符。
\W是[^0-9a-zA-Z_]。
非语言字符。
\s是[\t\v\n\r\f]。
表示空白字符,包括空格、水平制表符、垂直制表符、换行符、回车符和换页符。
记忆方法:空间行为优先这是一封信。
\S是[^\t\v\n\r\f]。
不是空白字符。
是[^\n\r\u2028\u2029]。
通配符,代表任意字符。
它们包括单独的换行符、回车符、行分隔符和段落分隔符。
如何记住:将省略号中的每个点视为类似内容的占位符。
如果想匹配任意字符怎么办?您可以使用任何[\d\D]、[\w\W]、[\s\S]和[^]。
量词也称为副词。
一旦你知道了{m,n}的确切含义,你只需要记住一些缩写即可。
{m,}表示至少出现m次。
{m}等于{m,m},即出现m次。
?等于{0,1},可见或不可见。
记忆法:问号有什么意义吗?+等于{1,},表示至少出现一次。
记忆方法:加号表示串联前必须是第一个。
*相当于{0,},表示可能出现在任意数字,也可能根本不出现。
温馨提示:看看天上的星星,可能没有星星,也可能这里有几颗,那里有几颗,你数不清。
\d{3,6}贪婪模式(贪婪匹配)匹配尽可能多的正则数字/\d{2,5}/,意味着该数字连续出现2到5次。
匹配2位、3位、4位、5位序列号。
贪婪模式匹配尽可能多的匹配项。
如果你给我6个,我想要5个。
如果你给我3个,我就拿3个。
反正只要是在他力所能及的范围内,越多越好。
\d{3,6}}?{m,}?+?*?惰性匹配的一种记忆方法:在数字后面加一个问号,满意,贪心?模式可以具有水平和垂直模糊匹配。
并支持多种子模式进行多选分支选择。
特殊形式为:(p1|p2|p3),其中p1、p2和p3是子模式,带有|示例1:varreg=/good|nice/g;varstr='goodidea,nicetry'console.log(str.match(reg));//['good','nice']示例2:varregex=/good|goodbye/g;varstring="goodbye";console.log(string.match(regex));//好的示例3:varregex=/goodbye|好/g;varstring=“再见”;console.log(string.match(regex));//Goodbye上面的输出显示了分支结构。
它也是懒惰的,即当前驱匹配时,不再尝试后继。

怎么让正则表达式从字符串的右边开始匹配

这可以通过使用反向字符类并使用贪婪模式来完成。
1.使用倒排字符类:倒排字符类由方括号中的“^”符号表示,匹配不属于指定字符类的任何字符。
如果在正则表达式的开头使用反向字符类并包含所有可用字符,则匹配位置从字符串的右侧开始并向左延伸。
2.使用贪婪模式:正则表达式默认是贪婪的,匹配尽可能多的字符串。
如果要从字符串的右侧开始匹配,请在正则表达式末尾使用“$”符号,并使用“.*”匹配任何字符,它将从字符串的右侧开始匹配。
左边的字符串。
热门文章
1
C语言字符串常量解析:区别、用途及存储方... 什么是字符串常量字符串常量是C语言中的一种数据类型,它是由一对双引号括起来的字符...

2
C语言printf函数:格式字符串与输出... printf函数中的格式与输出项有什么关系?在C语言中,printf函数中的格式...

3
Excel技巧:计算字符串起始位置与合并... 如何计算字符串在特定文本中的起始位置,怎么计算字符串在特定文本中的起始位置您可以...

4
Python发音全解:掌握正确的发音方法... python怎么读我的很多学习编程的朋友可能都知道Python这个词,但是他们中...

5
字符与字符串:编程中的基础文本类型解析 字符串什么意思字符串是由数字、字母和下划线组成的字符串,表示为s=“a1a2…a...

6
Python编程语言:多领域应用与开发优... Python的作用是什么?Python是一种跨平台计算机编程语言,是ABC语言的...

7
深度解析:C语言编程特点与应用领域 什么叫c语言C语言是一种编程语言。C编程语言应用广泛,具有以下特点和特点:1.语...

8
Java全解析:跨平台编程语言的魅力与多... java是什么Java是一种功能强大的编程语言,被称为“一次编写,随处运行”模型...

9
Python编程语言:特点、应用与优势解... python是什么?Python是一种跨平台计算机编程语言。它是一种集解释、编译...

10
C语言入门必备:100个核心代码实例解析 C语言必背100代码,C语言必会100代码大全对于C语言初学者来说,掌握基本关键...