字符串匹配正则方法有哪些
创始人
2025-01-08 04:15:16
0 次浏览
0 评论
js正则匹配
js中如何使用正则表达式来匹配字符串?不知道的小伙伴就来看看今天小编的参与吧!1.简介:常规对象声明有两种类型:new运算符和文字方法。2、使用正则表达式来匹配字符串:测试:通过测试我们可以直接检查某个字符串中是否存在exec。
letreg=/(t)es(t)/;let=测试;=reg.exec(s);console.log(arr1);//[test,t,t,index:0,input:test]全局模式下,会遍历整个字符串来查找匹配的字符串。
letreg=/(t)es(t)/g;让=测试;letarr1=reg.exec(s);console.log(arr1);//[test,t,t,index:4,input:test]注:以上两项输出的第二个和第三个是匹配组结果。
示例:letreg=/(t)es(t)/g;let=test;test]letarr1=reg.exec(test);console.log(arr1);//[test,t,t,index:4,input:test]组合两个不同的测试将匹配相同的测试字符串。
上面的demo中,显然没有完成第一个字符串的遍历。
reg对象会将当前比较的字符串(即4)之后的签名存储在reg对象的最后一个索引中。
将从对应的lastIndex下标开始的字符串进行直接匹配。
match:这个方法有点类似于exec:在非全局模式下,组将是相等的。
letreg=/(t)es(t)/;console.log(s.match(reg));//[test,t,t,index:0,input:testtest]console.log(s.match(reg)));//[test,t,t,index:0,input:test]全局模式排序不会匹配,返回所有匹配的字符串。
letreg=/(t)es(t)/;console.log(s.match(reg));//[test,t,t,index:0,input:testtest]console.log(s.match(reg)))。
console.log(s.replace(pattern,negos));//用任务替换测试注意:模式判定必须是g,即全局匹配,替换所有匹配的搜索(pattern);必须在字符串中返回模式的起始位置;(sample));//查找返回的状态,注意-1表示不同:与是否全局无关。
如果找到匹配项,则返回该位置。
如果小于,则返回-1testtest,console.log(s.split(example));//将空格分割成数组

怎么让正则表达式从字符串的右边开始匹配
这可以通过使用反向字符类和贪婪模式来实现。1、使用反向字符类:反向字符类由方括号中的“^”符号表示,可以匹配任何不属于指定字符类的字符。
如果在正则表达式的开头使用反向字符类并包含所有可能的字符,则匹配位置从字符串的右侧开始并向左延伸。
2.使用贪婪模式:默认情况下,正则表达式是贪婪的,匹配尽可能多的字符串。
如果想从字符串右侧开始匹配,可以在正则表达式末尾使用“$”符号,并使用“.*”来匹配任意字符,这样就从字符串右侧开始匹配left。
正则表达式匹配规则
本文不介绍正则表达式中通配符的含义,或者一些正则书写技巧,而是介绍正则匹配过程如正则匹配规则:abcde。此时位置关系分为两种:①普通匹配。
普通匹配占宽度,匹配的是字符②,是不占宽度的断言,匹配的是某个位置,所以断言又称为零宽度断言。
例如,表达式:/\w(?=\d)/首先,表达式分为两部分:\w和(?=\d)。
表达式\w匹配单个字母并占据宽度,(?=\d)代表数字的位置。
整个正则表达式串联时,先匹配字母或数字\w,然后匹配\w,\w后面必须跟一个数字(?=\d),其中\w是正则匹配,占宽度,而(?=\d)是一个断言,它不占用显示,它只是声明\w后面必须跟一个数字,让我们使用上面的表达式书看看匹配的结果,因为它不占用显示,匹配的结果只是字母“c”连接冒号1和2。
例如,我们有一个正则表达式和一个需要匹配的字符串。
首先确定字符串的位置,以便我们更容易注意到。
同样,我们有正则表达式/bc/将g分解为b和c两部分的过程如下:①当正则表达式匹配失败时,会尝试回溯②回溯是否成功取决于是否有回溯位置③如果没有回溯位置,则正则表达式匹配完全失败,控制权返回到表达式的起始位置。
④正则语法中修改|时使用了量词。
或者使用它,匹配位置仍然是一个可以跟踪的简单位置。
该示例仍然将常规基数分解为五个部分a、b{1,3}、b、b和c。
这五个部分仍然按照前面的规则①正常的匹配规则a和b{1,3}进行匹配。
,b,b,c分别对应字符a,b,b,b,c②因为b{1,3}有一个在整个过程中可以追踪的位置,所以为真。
那么默认的匹配规则就是贪婪模式。
b{1,3}首先尽可能匹配,然后将控制权转移到下一个匹配字符,直到无法继续匹配为止③当后续匹配字符无法匹配时,正则表达式会从可追踪的位置开始尝试匹配,如果匹配继续失败,就往前看。
回溯位置直至表达式匹配成功④如果没有可以满足表达式的回溯位置,则整个表达式将匹配失败,并会从上次匹配起始位置相邻的位置再次尝试正常默认匹配。
这是一种贪婪模式。
贪婪的情况就是匹配尽可能多的匹配,但并不是贪婪的情况。
这时候不能理解为尽可能少匹配,但是这时候我们再看另一个例子,如果遵循尽可能少匹配的原则。
匹配表达式必须是['d1'],所以不能简单地是。
可以理解,匹配表达式分为两部分[a-z]{1,5}和1
java一个字符串匹配多个正则表达式如何弄?
用(&)的标准默认连接是不需要添加任何东西,只需要a*b*匹配多个即可。正则表达式字符匹配
模糊匹配有两个“模糊”方向:水平模糊和垂直模糊。水平二义性是指能够匹配正则表达式的字符串长度不固定,并且在很多情况下都可能发生。
做到这一点的方法是使用量词。
例如,{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]。
代表一个数字。
记忆方法:它的英文名称是digital(数字)。
\D是[^0-9]。
代表除数字之外的任何字符。
\w是[0-9a-zA-Z_]。
表示数字、大小写字母和下划线。
记忆方法:w代表单词,又称单词字符。
\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}贪心模式(贪婪匹配)匹配尽可能多的正则数字/\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));//再见上面的结果说明了分支结构它也是懒惰的,意思是当上一个匹配时,不会重试下一个。
上一篇:
字符串中可以用什么表示任意符号
相关文章

C语言fprintf()函数应用教程:实...
2024-12-29 17:51:42
C语言格式化输出:%d、%u详解及区别
2025-01-10 16:27:26
编程基础:深入解析字符与字符串的区别与用...
2024-12-18 10:27:54
Python学习:了解不适宜初学者的真实...
2024-12-26 05:40:45
C语言字符数组与字符串:为何末尾必须使用...
2025-03-31 22:56:14
C语言实验心得:变量存储与程序设计技巧解...
2024-12-30 02:46:00
C语言中根号的表示方法详解
2025-03-09 22:18:29
C语言入门:深入浅出do-while循环...
2025-01-01 09:03:24
Python编程技巧:高效处理列表与时间...
2024-12-14 22:54:49
Python、C++与C语言中输入数字字...
2025-01-21 22:11:49最新文章
13
2025-04
13
2025-04
13
2025-04
13
2025-04
13
2025-04
13
2025-04
13
2025-04
13
2025-04
13
2025-04
13
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...