Regex 什么';正则表达式模式中()和[]的区别是什么?
将正则表达式的一部分放在()中(括号)和放在[](方括号)中有什么区别 这是如何做到的:Regex 什么';正则表达式模式中()和[]的区别是什么?,regex,Regex,将正则表达式的一部分放在()中(括号)和放在[](方括号)中有什么区别 这是如何做到的: [a-z0-9] 与此不同: (a-z0-9) ?(…)是一种对内容进行分组的方法,如数学(a-z0-9)是a-z0-9的分组顺序。组特别用于允许前面的表达式作为一个整体重复的组:a*b*匹配任意数量的a,后跟任意数量的b,例如a,aaab,bbbbb,等等。;与此相反,(ab)*匹配任意数量的ab,例如ab,abababab,等等 […]是一个描述单个字符选项的[a-z0-9]描述了一个单个字符,其范
[a-z0-9]
与此不同:
(a-z0-9)
?(…)
是一种对内容进行分组的方法,如数学<代码>(a-z0-9)是a-z0-9
的分组顺序。组特别用于允许前面的表达式作为一个整体重复的组:a*b*
匹配任意数量的a
,后跟任意数量的b
,例如a
,aaab
,bbbbb
,等等。;与此相反,(ab)*
匹配任意数量的ab
,例如ab
,abababab
,等等
[…]
是一个描述单个字符选项的[a-z0-9]
描述了一个单个字符,其范围可以是a
-z
或0
-9正则表达式中的[]
结构基本上是所有内容上的
的简写。例如,[abc]
匹配a、b或c。此外,-
字符在[]
中具有特殊含义。它提供了一个范围构造。正则表达式[a-z]
将匹配任何字母a到z
()
构造是建立优先顺序的分组构造(它对访问匹配的子字符串也有影响,但这是一个更高级的主题)。regex(abc)
将与字符串“abc”匹配 []
表示字符类<代码>()
表示捕获组
[a-z0-9]
--一个字符,其范围在a-z
或0-9
(a-z0-9)
——显式捕获a-z0-9
。没有射程
a
——可由[a-z0-9]
捕获
a-z0-9
——可由(a-z0-9)
捕获,然后可在替换和/或更高版本的表达式中引用。[a-z0-9]
将匹配任何小写字母或数字(a-z0-9)
将匹配精确的字符串“a-z0-9”
,并允许两个附加的内容:您可以对整个组应用诸如*
和?
和+
之类的修饰符,并且您可以在匹配后使用$1
或\1
引用此匹配。不过,这对您的示例没有帮助。[a-z0-9]
将与abcdefghijklmnopqrstuvwxyz012456789
中的一个匹配。换句话说,方括号正好匹配一个字符
(a-z0-9)
将匹配两个字符,第一个是abcdefghijklmnopqrstuvxyz
,第二个是0123456789
中的一个,就像括号不在那里一样。()将允许您准确读取匹配的字符。括号也可用于将两个表达式与条形码字符进行OR运算。例如,(a-z | 0-9)
将匹配一个字符,即任何小写字母或数字。尝试([a-z0-9])捕获小写字母和数字的混合字符串,以及捕获用于反向引用(或提取).+1以获取指向www.regular-expressions.info的链接。regex问题的良好资源。范围仅存在于字符类中(a-z | 0-9)
将匹配字符串a-z
或0-9
,但不匹配a
或5
。啊,感谢您的澄清。([a-z]|[0-9])将是我描述的更多内容。请检查您是否可以告诉我为什么这两个是不同的/[\s+],[\s+]?/
vs/(\s+),(\s+)/
第一个在字符类中有字符,第二个使用捕获组。这些表达方式实际上完全不同。第一个将匹配0或1个空格字符或a+,后跟逗号,后跟0或1个空格字符或a+。后者将匹配0个或多个空格字符,后跟逗号,后跟0个或多个空格字符。因此,基本上,如果您有如下字符串:var myStr=',“
,第一个表达式将不匹配,而第二个表达式将匹配。如果您有另一个字符串,如下所示:var myOtherStr='+,'
,它将与第一个表达式匹配,但与第二个表达式不匹配。我使用JS作为示例语言,但其概念是大多数正则表达式的工作方式。如果你想学习正则表达式,它是一个很好的资源+
在几乎所有类型的正则表达式中都是一个特殊字符。但是,当位于字符组(位于[]
中的一组字符)内部时,+
将作为常规字符进行匹配。