正则表达式模糊匹配技巧解析:水平与垂直模糊应用

创始人
2024-12-31 17:13:56
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为空格首字母。
​\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}贪心模式(GreedyMatching)匹配尽可能多的常规数字/\d{2,5}/,意味着该数字连续出现2到5次。
对应于2位、3位、4位和5位连续数字。
贪婪模式涉及获得尽可能多的匹配。
如果你能给我6个,我要5个。
如果你能给我3个,我就3个。
反正只要在合理的范围内,越多越好。
\d{3,6}?非贪婪模式(惰性匹配);可以通过在尽可能少匹配的量词后添加问号来实现惰性匹配,这样所有惰性匹配的情况如下:{m,n}?{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));//good示例3:varregex=/goodbye|good/g;varstring="goodbye";console.log(string.match(regex));//再见上面的果说明了分支结构也是懒惰的,即如果前一个匹配,则不会重试后一个。

正则表达式匹配指定多个字符串

varreg=/[\s\S]*外出[\s\S]*鞋子[\s\S]*/g;

求一个匹配以指定字符开头,指定字符结尾,中间内容任意的正则表达式

\b起始字符.*?结束字符\b,将上面正则表达式中的起始字符和结束字符替换为实际应该在开头和结尾的字符,正则表达式字符也需要转义。

^Stringregex="^baiA*C*B$";Patternp=Pattern.compile(regex);java.util.regex.Matcherm=p.matcher("这里是以shu开头的字符串matches");while(m.find()){System.out.println(m.group());

高级信息:

正则表达式是字符串(包括普通字符(例如a和z之间)和特殊字符(称为“元字符”)的逻辑公式是使用一些预定义的特定字符以及这些特定字符的组合来形成“规则字符串”。
这个“常规字符串”用于表达字符串的过滤逻辑。
正则表达式是一种文本模式,描述搜索文本时要匹配的一个或多个字符串。

参考来源:百度百科-正则表达式

热门文章
1
JSF架构解析与Java学习资源分享:J... JavaServerFacesJSF体系结构JavaServerFaces(JS...

2
数据结构C语言版深度解析与C语言入门很简... 《数据结构(C语言版)》.严蔚敏吴伟民著.pdf在《数据结构(C语言版)》一书中...

3
C语言字符串常量解析:区别、用途及存储方... 什么是字符串常量字符串常量是C语言中的一种数据类型,它是由一对双引号括起来的字符...

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

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

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

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

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

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

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