把正则表达式的一部分放在()(圆括号)中和放在[](方括号)中有什么区别?如何做到:
[a-z0-9]
与此不同:
(a-z0-9)
?
xesrikrc1#
[]表示字符类。()表示捕获组。[a-z0-9]-a-z或0-9范围内的一个字符(a-z0-9)-a-z0-9的显式捕获。无范围。a--可以由[a-z0-9]捕获。a-z0-9--可由(a-z0-9)捕获,然后可在替换和/或表达式的后面引用。
[]
()
a-z
0-9
a-z0-9
a
gudnpqoy2#
(…)是一个group,它像数学一样对内容进行分组;(a-z0-9)是a-z0-9的分组序列。组特别与quantifiers一起使用,允许前面的表达式作为一个整体重复:a*b*匹配任意数目的a,其后跟随任意数目的b,例如a、aaab、bbbbb等;与此相反,(ab)*匹配任何数目的ab,例如ab、abababab等。[…]是character class,它描述了单个字符的选项;[a-z0-9]描述一个字符,该字符的范围可以是a-z或0-9。
(…)
a*b*
b
aaab
bbbbb
(ab)*
ab
abababab
[…]
z
0
9
368yc8dk3#
正则表达式中的[]构造本质上是所有内容上的|的简写。例如[abc]匹配a、B或c。此外,-字符在[]中具有特殊含义。它提供了一个范围构造。正则表达式[a-z]将匹配a到z的任何字母。()构造是一个建立优先顺序的分组构造(它也会影响访问匹配的子字符串,但这是一个更高级的主题)。正则表达式(abc)将匹配字符串“abc”。
|
[abc]
-
[a-z]
(abc)
wgxvkvu94#
[a-z0-9]将匹配任何小写字母或数字。(a-z0-9)将完全匹配字符串"a-z0-9",并允许两个附加项:可以将*、?和+等修饰符应用于整个组,并且可以在与$1或\1匹配后引用此匹配。
"a-z0-9"
*
?
+
$1
\1
u2nhd7ah5#
尝试使用([a-z 0 -9])捕获小写字母和数字的混合字符串,以及用于反向引用(或提取)的捕获。
ubby3x7f6#
[a-z0-9]将匹配abcdefghijklmnopqrstuvwxyz0123456789中的一个。换句话说,方括号只匹配一个字符。(a-z0-9)将匹配两个字符,第一个是abcdefghijklmnopqrstuvwxyz的一个,第二个是0123456789的一个,就像括号不存在一样。()将允许您准确地读取匹配的字符。圆括号对于使用bar |字符对两个表达式进行OR运算也很有用。例如,(a-z|0-9)将匹配一个字符--任何小写字母或数字。
abcdefghijklmnopqrstuvwxyz0123456789
abcdefghijklmnopqrstuvwxyz
0123456789
(a-z|0-9)
6条答案
按热度按时间xesrikrc1#
[]
表示字符类。()
表示捕获组。[a-z0-9]
-a-z
或0-9
范围内的一个字符(a-z0-9)
-a-z0-9
的显式捕获。无范围。a
--可以由[a-z0-9]
捕获。a-z0-9
--可由(a-z0-9)
捕获,然后可在替换和/或表达式的后面引用。gudnpqoy2#
(…)
是一个group,它像数学一样对内容进行分组;(a-z0-9)
是a-z0-9
的分组序列。组特别与quantifiers一起使用,允许前面的表达式作为一个整体重复:a*b*
匹配任意数目的a
,其后跟随任意数目的b
,例如a
、aaab
、bbbbb
等;与此相反,(ab)*
匹配任何数目的ab
,例如ab
、abababab
等。[…]
是character class,它描述了单个字符的选项;[a-z0-9]
描述一个字符,该字符的范围可以是a
-z
或0
-9
。368yc8dk3#
正则表达式中的
[]
构造本质上是所有内容上的|
的简写。例如[abc]
匹配a、B或c。此外,-
字符在[]
中具有特殊含义。它提供了一个范围构造。正则表达式[a-z]
将匹配a到z的任何字母。()
构造是一个建立优先顺序的分组构造(它也会影响访问匹配的子字符串,但这是一个更高级的主题)。正则表达式(abc)
将匹配字符串“abc”。wgxvkvu94#
[a-z0-9]
将匹配任何小写字母或数字。(a-z0-9)
将完全匹配字符串"a-z0-9"
,并允许两个附加项:可以将*
、?
和+
等修饰符应用于整个组,并且可以在与$1
或\1
匹配后引用此匹配。u2nhd7ah5#
尝试使用([a-z 0 -9])捕获小写字母和数字的混合字符串,以及用于反向引用(或提取)的捕获。
ubby3x7f6#
[a-z0-9]
将匹配abcdefghijklmnopqrstuvwxyz0123456789
中的一个。换句话说,方括号只匹配一个字符。(a-z0-9)
将匹配两个字符,第一个是abcdefghijklmnopqrstuvwxyz
的一个,第二个是0123456789
的一个,就像括号不存在一样。()将允许您准确地读取匹配的字符。圆括号对于使用bar|
字符对两个表达式进行OR运算也很有用。例如,(a-z|0-9)
将匹配一个字符--任何小写字母或数字。