我想了解爲什麼在下面的示例中添加括號會得到不同的響應。將不勝感激regexec,是否存在括號,行爲
> regexec("\\w*\\.*", "12.3")
[[1]]
[1] 1
attr(,"match.length")
[1] 3
> regexec("[\\w*\\.*]", "12.3")
[[1]]
[1] 3
attr(,"match.length")
[1] 1
我想了解爲什麼在下面的示例中添加括號會得到不同的響應。將不勝感激regexec,是否存在括號,行爲
> regexec("\\w*\\.*", "12.3")
[[1]]
[1] 1
attr(,"match.length")
[1] 3
> regexec("[\\w*\\.*]", "12.3")
[[1]]
[1] 3
attr(,"match.length")
[1] 1
內[
和]
,特殊字符,如.
,*
等被視爲正常的字符,在這裏你給一個正則表達式與字符類封閉\\w*\\.*
看起來一個字字符(字母,數字或下劃線)或*
或.
(即允許最多一個字符)。
字符類允許在其中指定任何字符的出現。在此,內部角色類別\\w
被視爲\w
。 \\.
被視爲一個點
反對\\w*\\.*
匹配模式包含零個或多個單詞字符後跟零個或多個.
(爲.
這裏沒有什麼特別的意思),你的輸入是12.3
其中有兩位數字後跟一個點,導致匹配長度爲3.
針對[\\w*\\.*]
匹配模式包含以下任何一次且僅出現一次 - 單詞字符*,。
由於您的輸入在開頭處有一個數字,因此它是匹配的。所以匹配長度爲1.
括號創建一個「字符類」,這意味着「匹配任何列出的字符之一」。第一個是「匹配0或更多\ w後跟0或更多的時間。」第二個是「匹配\ w,星號,句點或星號(多餘)」之一。「
感謝您的明確解釋 –