我试图使用正则表达式使用stringr包来提取一些文本.出于某种原因,我得到了'无效的正则表达式'错误.我在一些网站测试工具中尝试了正则表达式,它似乎在那里工作.我想知道是否有一些关于regex如何在R中工作的独特之处,特别是在stringr包中.
这是一个例子:
string <- c("MARKETING: Vice President", "FINANCE: Accountant I",
"OPERATIONS: Plant Manager")
pattern <- "[A-Z]+(?=:)"
test <- gsub(" ","",string)
results <- str_extract(test, pattern)
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用.我想在其中没有":"的情况下获得"营销","财务"和"运营".这就是我使用前瞻语法的原因.我意识到我可以解决这个问题:
pattern <- "[A-Z]+(:)"
test <- gsub(" ","",string)
results <- gsub(":","",str_extract(test, pattern))
Run Code Online (Sandbox Code Playgroud)
但我预计在不久的将来,我可能需要使用外观来处理比这更复杂的情况.
我是否需要通过一些转义或某些东西修改正则表达式才能使其工作?
Lookahead断言要求您将正则表达式标识为R中的perl正则表达式.
str_extract(string, perl(pattern))
# [1] "MARKETING" "FINANCE" "OPERATIONS"
Run Code Online (Sandbox Code Playgroud)
您也可以在基地R中轻松完成此操作:
regmatches(string, regexpr(pattern, string, perl=TRUE))
# [1] "MARKETING" "FINANCE" "OPERATIONS"
Run Code Online (Sandbox Code Playgroud)
regexpr找到匹配项并regmatches使用匹配数据提取子字符串.
| 归档时间: |
|
| 查看次数: |
1417 次 |
| 最近记录: |