R regex - 匹配直到第一个字母 - space - 数字组合从末尾开始
R regex - match until first letter-space-digit combination from the end
我有以下字符串向量:
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
调用。如果找到多个组合,则只移动最后一个。移动的部分将始终以字母和 space 开头。
所需的输出将是:
"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"
我有以下字符串向量:
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
调用。如果找到多个组合,则只移动最后一个。移动的部分将始终以字母和 space 开头。
所需的输出将是:
"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"