Regex 在R中的两个词之间省略某些内容

Regex 在R中的两个词之间省略某些内容,regex,r,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克呢 如果有人能分享

如果这是测试字符串-

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克呢


如果有人能分享一个我可以学习regex的链接,那就太好了。

对于您给出的示例,这将起作用,但根据您想要做的事情,您可能需要一些更一般的内容:

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"

alt对于您给出的示例,这将起作用,但根据您想要做的事情,您可能需要更一般的东西:

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"
alt您是否尝试过:

/mass \|([a-zA-Z-0-9\s]+)\sserving volume/
您是否尝试过:

/mass \|([a-zA-Z-0-9\s]+)\sserving volume/
要排除该单元,请执行以下操作:

gsub('mass \\|([0-9]*).*', '\\1', alt)
[1] "36"
小心额外的空间,它也会被捕获。这不是你想要的:

gsub('mass \\|([0-9]* ).*', '\\1', alt)
[1] "36 "
要排除该单元,请执行以下操作:

gsub('mass \\|([0-9]*).*', '\\1', alt)
[1] "36"
小心额外的空间,它也会被捕获。这不是你想要的:

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

完成感谢Pierre Lafortune我只想提取36 gsub('mass\\\|([0-9]*).','\\1',alt)它与此一起工作很高兴它有帮助:)小心编辑,看起来您在
[0-9]*
之后保留了一个空格。正则表达式将保留该空间,并可能在以后使用尾随空间时产生问题。参见示例。完成感谢Pierre Lafortune我只想提取36 gsub('mass\\\\|([0-9]*)*,'\\1',alt)它可以与此一起工作很高兴它有帮助:)小心编辑,看起来您在
[0-9]*
之后保留了一个空格。正则表达式将保留该空间,并可能在以后使用尾随空间时产生问题。参见示例。