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

Kat*_*ieK 38 regex

在()(括号)中包含正则表达式的一部分与在[](方括号)中执行它之间有什么区别?

这是怎么回事

[a-z0-9]
Run Code Online (Sandbox Code Playgroud)

与此不同:

(a-z0-9)
Run Code Online (Sandbox Code Playgroud)

Jef*_*ert 44

[]表示一个字符类.()表示捕获组.

[a-z0-9]- 一个在a-zOR 范围内的字符0-9

(a-z0-9)- 明确捕获a-z0-9.没有范围.

a- 可以被捕获[a-z0-9].

a-z0-9- 可以被捕获(a-z0-9),然后可以在表达式中替换和/或稍后引用.

  • 你能告诉我为什么这两个是不同的`/ [\ s +]?,[\ s +]?/`与`/(\ s +)?,(\ s +)?/` (2认同)

Gum*_*mbo 16

(…)是一个像数学一样对内容进行分组的组; (a-z0-9)是分组的序列a-z0-9.基团是特别用于与量词,允许前面的表达式被重复作为一个整体:a*b*任意数目的匹配a的后跟任意数量的b的,例如a,aaab,bbbbb等; 在此相反,(ab)*匹配任何数目的ab的,例如ab,abababab

[…]是一个描述单个字符选项的字符类 ; [a-z0-9]描述一个可以是范围的单个字符a- z0- 9.

  • +1链接到www.regular-expressions.info正则表达式问题的良好资源. (3认同)

Jar*_*Par 12

[]正则表达式中的构造基本上是|对所有内容的简写.例如[abc]匹配a,b或c.此外,-角色在一个内部具有特殊意义[].它提供了范围构造.正则表达式[a-z]将匹配任何字母a到z.

()结构是一个分组构造建立优先顺序(也有访问匹配子影响,但是这是更高级主题的位).正则表达式(abc)将匹配字符串"abc".


mkb*_*mkb 5

[a-z0-9]将匹配任何小写字母或数字.(a-z0-9)将匹配确切的字符串,"a-z0-9"并允许另外两件事:您可以将修饰符*?+整数组一起应用于整个组,并且您可以在匹配后使用$1或引用此匹配\1.但是,对你的例子没用.