我如何编写一个正则表达式来抓取位于任意位置的大写字母,然后是任何后续字符,直到空格?
输入:
蛋糕派类型APPLE CRUMBLE挞 toast 德克萨斯州价格
例如,我想抓取“APPLE”,尽管它前面没有空格。我想要“崩溃”。我还想要“Texas”,尽管并非所有组成部分都是大写的。
我将使用gsub(pattern, replacement = "", x = string)
来获得以下输出
输出:
蛋糕派型挞 toast 价格
谢谢!
最佳答案
您可以使用regmatches
来提取这些子字符串。
> x <- 'cake pietypeAPPLE CRUMBLE tart toastTexas price'
> regmatches(x, gregexpr('[A-Z]\\S+', x))[[1]]
# [1] "APPLE" "CRUMBLE" "Texas"
或者,如果您只想严格匹配字母字符。
> regmatches(x, gregexpr('[A-Z][A-Za-z]+', x))[[1]]
如果您想替换它们,我会使用以下内容来避免单词之间留下多余的空格。
> gsub('[A-Z][A-Za-z]+( [A-Z][A-Za-z]+)*', '', x)
# [1] "cake pietype tart toast price"
关于regex - 直到下一个空格的条件的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25773626/