regex 使用stringr和lookahead提取字符串的非匹配部分

nzrxty8p  于 2023-08-08  发布在  其他
关注(0)|答案(2)|浏览(83)

我有一个字符串,它总是在末尾包含不需要的文本。我想提取除了不需要的文本之外的所有内容。

text <- "my_text_and_unwanted_text"
output <- str_extract(text, ".*(?=<_and)")
output

字符串
我希望“.*”匹配所有前面带有“_and”的文本。因此,预期的结果是“我的文本”,但我得到“NA”。我已经审查了一些职位,但有麻烦找到的例子,显示如何匹配一切,但所需的字符串。

nkoocmlb

nkoocmlb1#

考虑此操作的另一种方法是将不需要的文本替换为空,而不是提取其他所有内容。这往往更简单。

text <- "my_text_and_unwanted_text"
str_replace(text, "_and.*", "")
# [1] "my_text"

字符串
从提取的Angular 来看,你的尝试非常接近。(?<=用于look-behind,您需要(?=用于look-ahead

str_extract(text, ".*(?=_and)")
# [1] "my_text"

6kkfgxo0

6kkfgxo02#

试着扭转这个问题。不提取所需文本,而是删除不需要的文本:

str_remove(text, "_and.*")
[1] "my_text"

字符串

相关问题