我正在尝试提取22 chocolates
来自以下字符串:
SOMETEXT for 2 FFXX. Another 22 chocolates & 45 chamkila.
使用正则表达式\\d+\\s*(chocolates.|chocolate.)
。我用了 :
grep("\\d+\\s*(chocolates.|chocolate.)",s)
但它没有给出字符串22 chocolates
。如何提取与正则表达式匹配的部分?
这是一个使用的选项sub
从基数 R 开始:
x <- "SOMETEXT for 2 FFXX. Another 22 chocolates & 45 chamkila."
sub(".*?(\\d+ chocolates?).*", "\\1", x)
22 chocolates
括号中的模式,(\\d+ chocolates?)
, is a capture组,并且可以作为\\1
after sub
已参加比赛。
Demo http://rextester.com/JIYU56480
Edit:
正如你所看到的,如果sub
找不到精确匹配,它将返回输入字符串。这种行为通常是有意义的,因为在替换没有意义的情况下,您会希望输入不被更改。
如果您需要找出模式是否匹配,则调用grep
是一种选择:
grep(".*(\\d+ chocolates?).*",x,value = FALSE)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)