Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R regex-匹配到从末尾开始的第一个字母空格数字组合_Regex_R_Gsub - Fatal编程技术网

R regex-匹配到从末尾开始的第一个字母空格数字组合

R regex-匹配到从末尾开始的第一个字母空格数字组合,regex,r,gsub,Regex,R,Gsub,我有以下字符串向量: x = c("Breakfast Sandwich 12.6 - 18.4oz 4 - 8ct", "Buffalo Wing 7.6 - 10 oz", "Asstd Cafe Appetizer 8 - 20", "16in Extra Lrg Pepperoni 45.5oz") 我需要将大小移动到字符串的开头,但无法为其创建适当的regex调用。如果找到多个组合,请仅移动最后一个组合。被移动的零件将始终以字母和空格开头。

我有以下字符串向量:

x = c("Breakfast Sandwich 12.6 - 18.4oz 4 - 8ct", 
      "Buffalo Wing 7.6 - 10 oz", 
      "Asstd Cafe Appetizer 8 - 20", 
      "16in Extra Lrg Pepperoni 45.5oz") 
我需要将大小移动到字符串的开头,但无法为其创建适当的
regex
调用。如果找到多个组合,请仅移动最后一个组合。被移动的零件将始终以字母和空格开头。 所需输出为:

"4 - 8ct Breakfast Sandwich 12.6 - 18.4oz", 
"7.6 - 10 oz Buffalo Wing", 
"8 - 20 Asstd Cafe Appetizer", 
"45.5oz 16in Extra Lrg Pepperoni"
我认为,在找到类似
[a-z][0-9].*的东西之前,是非贪婪匹配吗?
?或者可以使用
split
? 你能帮我吗?提前谢谢你


B.t.w.,如果没有针对所有测试用例的一步解决方案,那么一系列单独的
gsub
也将起作用

这似乎可以处理您提到的情况:


sub((.[a-z]{1})([0-9.]+\\s*-?\\s*[0-9.]*\\s*[a-z]*\\s*)$,“\\2\\1”,x)

这似乎也适用于您的情况

sub("(.*[a-zA-Z]) +(\\d.*)", "\\2 \\1", x)
# [1] "4 - 8ct Breakfast Sandwich 12.6 - 18.4oz" "7.6 - 10 oz Buffalo Wing"                
# [3] "8 - 20 Asstd Cafe Appetizer"              "45.5oz 16in Extra Lrg Pepperoni" 
试试这个:

 gsub('(.*(?<=\\w)) (\\d.*$)','\\2 \\1',x,perl=T)
[1] "4 - 8ct Breakfast Sandwich 12.6 - 18.4oz" "7.6 - 10 oz Buffalo Wing"                 "8 - 20 Asstd Cafe Appetizer"             
[4] "45.5oz 16in Extra Lrg Pepperoni"  

gsub(”(.*Yes。可以有oz和ct以外的单位,规则是只有最后一个“块”“有人动起来了吗?”@RichardScriven,你的答案怎么了?我正要投票表决。我现在感觉很糟糕。即使它对部分案件有效,对meGreat已经很有帮助了,谢谢!如果一个太复杂或根本不可能,请参见编辑关于
gsub
,谢谢!我现在有多项选择:)为什么不选择字符数为一半的;)