![](/img/trans.png)
[英]the difference between `\\s|*` and `\\s|[*]` in regular expression in r?
[英]What's the difference between () and [] in regular expression patterns?
在()(括号)中包含正则表达式的一部分与在[](方括号)中执行它之间有什么区别?
这是怎么回事
[a-z0-9]
与此不同:
(a-z0-9)
?
[]
表示一个字符类。 ()
表示捕获组。
[a-z0-9]
- 一个在az
或0-9
范围内的字符
(a-z0-9)
- 明确捕获a-z0-9
。 没有范围。
a
- 可以被[a-z0-9]
捕获。
a-z0-9
- 可以由(a-z0-9)
捕获,然后可以在表达式中替换和/或稍后引用。
正则表达式中的[]
构造基本上是|
简写 关于所有内容。 例如[abc]
匹配a,b或c。 另外, -
字符在[]
内部具有特殊含义。 它提供了范围构造。 正则表达式[az]
将匹配任何字母a到z。
()
构造是一个建立优先顺序的分组构造(它对访问匹配的子串也有影响,但这更像是一个高级主题)。 正则表达式(abc)
将匹配字符串“abc”。
[a-z0-9]
将匹配任何小写字母或数字。 (a-z0-9)
将匹配确切的字符串"a-z0-9"
并允许另外两件事:你可以应用像*
和?
这样的修饰符 和+
到整个组,您可以在匹配后使用$1
或\\1
引用此匹配。 但是,对你的例子没用。
尝试([a-z0-9])捕获小写字母和数字的混合字符串,以及捕获后引用(或提取)。
[a-z0-9]
将匹配abcdefghijklmnopqrstuvwxyz0123456789
中的一个。 换句话说,方括号恰好匹配一个字符。
(a-z0-9)
将匹配两个字符,第一个是abcdefghijklmnopqrstuvwxyz
,第二个是0123456789
,就好像括号不在那里一样。 ()将允许您准确读取匹配的字符。 括号也可用于使用bar |
对两个表达式进行OR运算 字符。 例如, (az|0-9)
将匹配一个字符 - 任何小写字母或数字。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.