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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。