regex 正则表达式模式中的()和[]有什么区别?

yfwxisqw  于 2023-03-04  发布在  其他
关注(0)|答案(6)|浏览(155)

把正则表达式的一部分放在()(圆括号)中和放在[](方括号)中有什么区别?
如何做到:

[a-z0-9]

与此不同:

(a-z0-9)

xesrikrc

xesrikrc1#

[]表示字符类。()表示捕获组。
[a-z0-9]-a-z0-9范围内的一个字符
(a-z0-9)-a-z0-9的显式捕获。无范围。
a--可以由[a-z0-9]捕获。
a-z0-9--可由(a-z0-9)捕获,然后可在替换和/或表达式的后面引用。

gudnpqoy

gudnpqoy2#

(…)是一个group,它像数学一样对内容进行分组;(a-z0-9)a-z0-9的分组序列。组特别与quantifiers一起使用,允许前面的表达式作为一个整体重复:a*b*匹配任意数目的a,其后跟随任意数目的b,例如aaaabbbbbb等;与此相反,(ab)*匹配任何数目的ab,例如ababababab等。
[…]character class,它描述了单个字符的选项;[a-z0-9]描述一个字符,该字符的范围可以是a-z0-9

368yc8dk

368yc8dk3#

正则表达式中的[]构造本质上是所有内容上的|的简写。例如[abc]匹配a、B或c。此外,-字符在[]中具有特殊含义。它提供了一个范围构造。正则表达式[a-z]将匹配a到z的任何字母。
()构造是一个建立优先顺序的分组构造(它也会影响访问匹配的子字符串,但这是一个更高级的主题)。正则表达式(abc)将匹配字符串“abc”。

wgxvkvu9

wgxvkvu94#

[a-z0-9]将匹配任何小写字母或数字。(a-z0-9)将完全匹配字符串"a-z0-9",并允许两个附加项:可以将*?+等修饰符应用于整个组,并且可以在与$1\1匹配后引用此匹配。

u2nhd7ah

u2nhd7ah5#

尝试使用([a-z 0 -9])捕获小写字母和数字的混合字符串,以及用于反向引用(或提取)的捕获。

ubby3x7f

ubby3x7f6#

[a-z0-9]将匹配abcdefghijklmnopqrstuvwxyz0123456789中的一个。换句话说,方括号只匹配一个字符。
(a-z0-9)将匹配两个字符,第一个是abcdefghijklmnopqrstuvwxyz的一个,第二个是0123456789的一个,就像括号不存在一样。()将允许您准确地读取匹配的字符。圆括号对于使用bar |字符对两个表达式进行OR运算也很有用。例如,(a-z|0-9)将匹配一个字符--任何小写字母或数字。

相关问题