R 中的正则表达式负后视
Regex negative lookbehind in R
我正在尝试在 stringr 中做一个正则表达式以在 R 中进行负向回顾。
所以基本上,我有一个看起来像这样的文本数据:
See item 7 Management's Discussion and Analysis. BlahBlahBlah. Item 7 Management's Discussion and Analysis. BlahBlahBlah. Item 8 Financial Statements and Supplementary Data.
我想 select 从 "blahblahblah." 句子之后的 "Item 7" 到 "Item 8-Financial Statements and Supplementary Data"
的所有内容
所以我想要
Item 7 Management's Discussion and Analysis. BlahBlahBlah. Item 8 Financial Statements and Supplementary Data.
除了包含 "see item 7 Management's Discussion and Analysis"
的句子之外的所有内容
现在,我正在使用这段代码:
(?<!see)Item 7(.*?)Item 8
但它没有返回我想要的。
我的逻辑是不查看包含单词 "see" 后跟 "item 7 Management's Discussion and Analysis" 的句子,但它似乎不起作用。
https://regex101.com/r/yF7aQ1/3
有什么方法可以实现这种负面回溯?
不确定你是如何在 R 中实现它的,.*(?<!See) (item 7 .*)
与 sub
一起工作,只是要小心 see 后面的 space 和你可以忽略的字母大小写ignore.case
参数。
sub(".*(?<!See) (item 7 .*)", "\1", s, ignore.case = T, perl = T)
# [1] "Item 7 Management's Discussion and Analysis. BlahBlahBlah. Item 8 Financial Statements and Supplementary Data."
另一种选择:
sub(".*(?=(?<!See) ?item 7)", "", s, ignore.case = T, perl = T)
# [1] "Item 7 Management's Discussion and Analysis. BlahBlahBlah. Item 8 Financial Statements and Supplementary Data."
使用 stringr
包中的 str_extract_all()
,似乎没有提供 ignore.case
选项,您可以使用 [Ii]
忽略大小写:
library(stringr)
str_extract_all(s, "(?<!See )[Ii]tem 7(.*)")
# [1] "Item 7 Management's Discussion and Analysis. BlahBlahBlah. Item 8 Financial Statements and Supplementary Data."
我正在尝试在 stringr 中做一个正则表达式以在 R 中进行负向回顾。
所以基本上,我有一个看起来像这样的文本数据:
See item 7 Management's Discussion and Analysis. BlahBlahBlah. Item 7 Management's Discussion and Analysis. BlahBlahBlah. Item 8 Financial Statements and Supplementary Data.
我想 select 从 "blahblahblah." 句子之后的 "Item 7" 到 "Item 8-Financial Statements and Supplementary Data"
的所有内容所以我想要
Item 7 Management's Discussion and Analysis. BlahBlahBlah. Item 8 Financial Statements and Supplementary Data.
除了包含 "see item 7 Management's Discussion and Analysis"
的句子之外的所有内容现在,我正在使用这段代码:
(?<!see)Item 7(.*?)Item 8
但它没有返回我想要的。
我的逻辑是不查看包含单词 "see" 后跟 "item 7 Management's Discussion and Analysis" 的句子,但它似乎不起作用。
https://regex101.com/r/yF7aQ1/3
有什么方法可以实现这种负面回溯?
不确定你是如何在 R 中实现它的,.*(?<!See) (item 7 .*)
与 sub
一起工作,只是要小心 see 后面的 space 和你可以忽略的字母大小写ignore.case
参数。
sub(".*(?<!See) (item 7 .*)", "\1", s, ignore.case = T, perl = T)
# [1] "Item 7 Management's Discussion and Analysis. BlahBlahBlah. Item 8 Financial Statements and Supplementary Data."
另一种选择:
sub(".*(?=(?<!See) ?item 7)", "", s, ignore.case = T, perl = T)
# [1] "Item 7 Management's Discussion and Analysis. BlahBlahBlah. Item 8 Financial Statements and Supplementary Data."
使用 stringr
包中的 str_extract_all()
,似乎没有提供 ignore.case
选项,您可以使用 [Ii]
忽略大小写:
library(stringr)
str_extract_all(s, "(?<!See )[Ii]tem 7(.*)")
# [1] "Item 7 Management's Discussion and Analysis. BlahBlahBlah. Item 8 Financial Statements and Supplementary Data."