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