我如何编写一个正则表达式来抓取位于任何后续字符之外的大写字母直到空格?
输入:
cake pietypeAPPLE CRUMBLE tart toastTexas price
例如,我想抓住"APPLE",尽管它没有前面的空格.我想要"CRUMBLE".我也想要"德克萨斯",即使它的所有组件都不是大写的.
我将用于gsub(pattern, replacement = "", x = string)获得以下输出
输出:
cake pietype tart toast price
谢谢!
您可以使用它regmatches来提取这些子字符串.
> x <- 'cake pietypeAPPLE CRUMBLE tart toastTexas price'
> regmatches(x, gregexpr('[A-Z]\\S+', x))[[1]]
# [1] "APPLE" "CRUMBLE" "Texas"
Run Code Online (Sandbox Code Playgroud)
或者,如果您想严格匹配字母字符.
> regmatches(x, gregexpr('[A-Z][A-Za-z]+', x))[[1]]
Run Code Online (Sandbox Code Playgroud)
如果你想要替换它们,我会使用以下内容来避免在单词之间留下多余的空间.
> gsub('[A-Z][A-Za-z]+( [A-Z][A-Za-z]+)*', '', x)
# [1] "cake pietype tart toast price"
Run Code Online (Sandbox Code Playgroud)