str_locate()
返回第一個匹配的start
和end
位置; str_locate_all()
返回每個匹配的 start
和 end
位置。
由於 start
和 end
值包含在內,因此零長度匹配(例如 $
、 ^
、 \\b
)將具有小於 start
的 end
。
參數
- string
-
輸入向量。或者是一個字符向量,或者是可強製轉換為一個的東西。
- pattern
-
要尋找的模式。
默認解釋是正則表達式,如
vignette("regular-expressions")
中所述。使用regex()
可以更好地控製匹配行為。使用
fixed()
匹配固定字符串(即僅比較字節)。這很快,但是是近似值。一般來說,為了匹配人類文本,您需要coll()
,它尊重指定區域設置的字符匹配規則。將字符、單詞、行和句子邊界與
boundary()
匹配。空模式“”相當於boundary("character")
。
值
-
str_locate()
對於string
的每個元素返回一個兩列一行的整數矩陣。第一列start
給出比賽開始的位置,第二列end
給出比賽結束的位置。 -
str_locate_all()
返回與string
/pattern
長度相同的整數矩陣列表。該矩陣具有如上所述的列start
和end
,並且每個匹配對應一行。
也可以看看
str_extract()
用於提取匹配的便捷方法,stringi::stri_locate()
用於底層實現。
例子
fruit <- c("apple", "banana", "pear", "pineapple")
str_locate(fruit, "$")
#> start end
#> [1,] 6 5
#> [2,] 7 6
#> [3,] 5 4
#> [4,] 10 9
str_locate(fruit, "a")
#> start end
#> [1,] 1 1
#> [2,] 2 2
#> [3,] 3 3
#> [4,] 5 5
str_locate(fruit, "e")
#> start end
#> [1,] 5 5
#> [2,] NA NA
#> [3,] 2 2
#> [4,] 4 4
str_locate(fruit, c("a", "b", "p", "p"))
#> start end
#> [1,] 1 1
#> [2,] 1 1
#> [3,] 1 1
#> [4,] 1 1
str_locate_all(fruit, "a")
#> [[1]]
#> start end
#> [1,] 1 1
#>
#> [[2]]
#> start end
#> [1,] 2 2
#> [2,] 4 4
#> [3,] 6 6
#>
#> [[3]]
#> start end
#> [1,] 3 3
#>
#> [[4]]
#> start end
#> [1,] 5 5
#>
str_locate_all(fruit, "e")
#> [[1]]
#> start end
#> [1,] 5 5
#>
#> [[2]]
#> start end
#>
#> [[3]]
#> start end
#> [1,] 2 2
#>
#> [[4]]
#> start end
#> [1,] 4 4
#> [2,] 9 9
#>
str_locate_all(fruit, c("a", "b", "p", "p"))
#> [[1]]
#> start end
#> [1,] 1 1
#>
#> [[2]]
#> start end
#> [1,] 1 1
#>
#> [[3]]
#> start end
#> [1,] 1 1
#>
#> [[4]]
#> start end
#> [1,] 1 1
#> [2,] 6 6
#> [3,] 7 7
#>
# Find location of every character
str_locate_all(fruit, "")
#> [[1]]
#> start end
#> [1,] 1 1
#> [2,] 2 2
#> [3,] 3 3
#> [4,] 4 4
#> [5,] 5 5
#>
#> [[2]]
#> start end
#> [1,] 1 1
#> [2,] 2 2
#> [3,] 3 3
#> [4,] 4 4
#> [5,] 5 5
#> [6,] 6 6
#>
#> [[3]]
#> start end
#> [1,] 1 1
#> [2,] 2 2
#> [3,] 3 3
#> [4,] 4 4
#>
#> [[4]]
#> start end
#> [1,] 1 1
#> [2,] 2 2
#> [3,] 3 3
#> [4,] 4 4
#> [5,] 5 5
#> [6,] 6 6
#> [7,] 7 7
#> [8,] 8 8
#> [9,] 9 9
#>
相關用法
- R stringr str_like 以與 SQL 的 LIKE 運算符相同的方式檢測模式
- R stringr str_length 計算長度/寬度
- R stringr str_which 查找匹配索引
- R stringr str_extract 提取完整的匹配項
- R stringr str_subset 查找匹配元素
- R stringr str_escape 轉義正則表達式元字符
- R stringr str_trim 刪除空格
- R stringr str_sub 使用子字符串的位置獲取和設置子字符串
- R stringr str_replace_na 把NA變成“NA”
- R stringr str_trunc 將字符串截斷至最大寬度
- R stringr str_match 從匹配中提取組件(捕獲組)
- R stringr str_detect 檢測是否存在匹配
- R stringr str_count 計算匹配次數
- R stringr str_split 將字符串分成幾段
- R stringr str_unique 刪除重複的字符串
- R stringr str_remove 刪除匹配的模式
- R stringr str_pad 將字符串填充到最小寬度
- R stringr str_equal 判斷兩個字符串是否相等
- R stringr str_view 查看字符串和匹配項
- R stringr str_glue 用膠水插補
- R stringr str_conv 指定字符串的編碼
- R stringr str_order 對字符向量進行排序、排名或排序
- R stringr str_starts 檢測開始/結束時是否存在匹配
- R stringr str_c 將多個字符串連接成一個字符串
- R stringr str_wrap 將單詞包裝成格式良好的段落
注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Find location of match。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。