regexec、是否有括号、行为

regexec、是否有括号、行为,regex,r,Regex,R,我试图理解为什么在下面的示例中添加括号会得到不同的响应。如有任何解释,将不胜感激 > regexec("\\w*\\.*", "12.3") [[1]] [1] 1 attr(,"match.length") [1] 3 > regexec("[\\w*\\.*]", "12.3") [[1]] [1] 3 attr(,"match.length") [1] 1 方括号创建字符类,这意味着匹配列出的任何字符之一。第一个是匹配0或多个\w,后跟0或多个句点。第二个是匹配\w、星号、

我试图理解为什么在下面的示例中添加括号会得到不同的响应。如有任何解释,将不胜感激

> regexec("\\w*\\.*", "12.3")
[[1]]
[1] 1
attr(,"match.length")
[1] 3

> regexec("[\\w*\\.*]", "12.3")
[[1]]
[1] 3
attr(,"match.length")
[1] 1

方括号创建字符类,这意味着匹配列出的任何字符之一。第一个是匹配0或多个\w,后跟0或多个句点。第二个是匹配\w、星号、句号或星号冗余中的一个。

方括号创建一个字符类,这意味着匹配列出的任何字符之一。第一个是匹配0或多个\w,后跟0或多个句点。第二个是匹配\w、星号、句点或星号冗余中的一个。

在[and]中,,*等特殊字符被视为普通字符,在这里您给出了一个正则表达式,其中包含一个字符类,包含\\w*\\.*,它查找单词字符字母、数字或下划线或a*或a*。i、 e.最多允许一个字符

字符类允许在其中指定的任何字符出现。这里,在字符类中,\\w被视为\w.\\。被视为一个点,没有特殊意义。这里

针对\\w*\.*匹配模式包含零个或多个单词字符,后跟零个或多个。您的输入是12.3,它有两个数字后跟一个点,导致匹配长度为3

对于[\\w*\.*],匹配模式包含以下任何一个出现一次且仅出现一次的字符*

因为您的输入在开头有一个数字,所以它是匹配的。因此,匹配长度为1。

在[and]内部,特殊字符如.,*等被视为普通字符,这里您给出了一个正则表达式,其中包含一个字符类\\w*\.*,用于查找单词字符字母、数字或下划线或a*或a*。i、 e.最多允许一个字符

字符类允许在其中指定的任何字符出现。这里,在字符类中,\\w被视为\w.\\。被视为一个点,没有特殊意义。这里

针对\\w*\.*匹配模式包含零个或多个单词字符,后跟零个或多个。您的输入是12.3,它有两个数字后跟一个点,导致匹配长度为3

对于[\\w*\.*],匹配模式包含以下任何一个出现一次且仅出现一次的字符*

因为您的输入在开头有一个数字,所以它是匹配的。所以匹配长度是1