正则表达式模糊匹配:水平与垂直歧义详解
创始人
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.使用贪婪模式:正则表达式默认是贪婪的,匹配尽可能多的字符串。
如果要从字符串的右侧开始匹配,请在正则表达式末尾使用“$”符号,并使用“.*”匹配任何字符,它将从字符串的右侧开始匹配。
左边的字符串。

相关文章

Windows 11 Docker安装全...
2025-03-31 21:54:27
Python代码解析:如何从字符串中去除...
2025-01-28 07:44:24
字符与字符串的区别与用法:编程中的文本处...
2024-12-16 18:04:47
全栈开发揭秘:从前端到后端的一站式技术解...
2024-12-15 00:35:14
SPSS数据分析:字符串变量处理与数值统...
2024-12-15 23:42:15
C语言字符串处理:输入与数字提取技巧
2024-12-18 08:21:23
Python小数处理与格式化技巧汇总
2025-03-28 20:42:38
Python输入输出详解:input()...
2024-12-17 22:32:50
C++与C语言:哪个学习难度更高?深度解...
2025-03-17 05:00:35
c语言面向过程是什么意思
2025-01-06 09:03:02最新文章
04
2025-04
04
2025-04
04
2025-04
04
2025-04
04
2025-04
04
2025-04
04
2025-04
04
2025-04
04
2025-04
04
2025-04
热门文章
1
JavaScript数组转字符串:两种方...
如何 用 js把 数组 转换成 字符串这里的系列窗口为您提供了两种方式。1。使用...
2
C语言实现三角形面积计算:海伦公式应用实...
如何用c语言编写已知三角形三边求面积?已知语言C可以找到三角形三角侧的面积,如下...
3
计算机专业核心:C语言在多学科中的应用与...
哪些专业学c语言对于计算机专业来说,入门级编程语言C是用来为学生的编程打下坚实的...
4
JSF架构解析与Java学习资源分享:J...
JavaServerFacesJSF体系结构JavaServerFaces(JS...
5
数据结构C语言版深度解析与C语言入门很简...
《数据结构(C语言版)》.严蔚敏吴伟民著.pdf在《数据结构(C语言版)》一书中...
6
C语言字符串常量解析:区别、用途及存储方...
什么是字符串常量字符串常量是C语言中的一种数据类型,它是由一对双引号括起来的字符...
7
C语言printf函数:格式字符串与输出...
printf函数中的格式与输出项有什么关系?在C语言中,printf函数中的格式...
8
Excel技巧:计算字符串起始位置与合并...
如何计算字符串在特定文本中的起始位置,怎么计算字符串在特定文本中的起始位置您可以...
9
Python发音全解:掌握正确的发音方法...
python怎么读我的很多学习编程的朋友可能都知道Python这个词,但是他们中...
10
字符与字符串:编程中的基础文本类型解析
字符串什么意思字符串是由数字、字母和下划线组成的字符串,表示为s=“a1a2…a...