在R中的两个单词之间收集一些内容

时间:2015-07-06 18:48:45

标签: regex r

如果这是测试字符串 -

alt="mass |36 grams\nserving volume | 63 mL (milliliters)\nserving density | 0.57 g\/cm^3 (grams per cubic centimeter)" title="mass | 36 grams.

\btitle="mass| \b.*+\s*+\K.*(?=serving volume\b) 

这是我的代码,但它不会返回所需内容。 那么如何从这个文本中提取36克?

如果有人可以分享我可以学习正则表达式的链接,那就太好了。

3 个答案:

答案 0 :(得分:2)

gsub('mass \\|([0-9]*).*', '\\1', alt)
[1] "36"

排除单位:

gsub('mass \\|([0-9]* ).*', '\\1', alt)
[1] "36 "

注意额外的空间,它也会被捕获。这不是你想要的:

clearAndShow()

答案 1 :(得分:1)

对于您提供的示例,这将有效,但根据您的目的,您可能需要更通用的内容:

alt<-"mass |36 grams\nserving volume | 63 mL (milliliters)\nserving density | 0.57 g/cm^3 (grams per cubic centimeter)"
gsub(".*\\|([0-9]+ gram).*","\\1",alt)
[1] "36 gram"

答案 2 :(得分:1)

您尝试过:

/mass \|([a-zA-Z-0-9\s]+)\sserving volume/