Regex 在Google工作表或Excel中使用字符串和数字重新处理数据

Regex 在Google工作表或Excel中使用字符串和数字重新处理数据,regex,google-sheets,google-sheets-formula,Regex,Google Sheets,Google Sheets Formula,我在Google sheets或Excel中有这些数据: 2 MG/ML 500 MCG 100 MG ; 200 MG ; 200 MCG 100 MCG/ML 325 MG ; 37.5 MG 60 G ; 9 G/1000 ML 我想要这种格式的。我想正则表达式可以吗?我怎么能做到呢 all data Dose Unit 2 MG/ML 2

我在Google sheets或Excel中有这些数据:

2 MG/ML
500 MCG
100 MG ; 200 MG ; 200 MCG
100 MCG/ML
325 MG ; 37.5 MG
60 G ; 9 G/1000 ML
我想要这种格式的。我想正则表达式可以吗?我怎么能做到呢

all data                       Dose                Unit 
2 MG/ML                          2                 MG/ML
500 MCG                         500                MCG
100 MG ; 200 MG ; 200 MCG       100;200;200        MG;MG;MCG
100 MCG/ML                      100                MCG/ML
325 MG ; 37.5 MG                325;37.5           MG;MG
60 G ; 9 G/1000 ML              60;9               G;G/1000 ML

B2
中,您可以使用:

=REGEXREPLACE(A2,"(;)?(?:^| +)([\d.]+)[ A-Z\/\d]+","$1$2")
=REGEXREPLACE(A2,"(?:^|\s*(;))\s*[\d.]+\s*","$1")
在线查看

C2
中,您可以使用:

=REGEXREPLACE(A2,"(;)?(?:^| +)([\d.]+)[ A-Z\/\d]+","$1$2")
=REGEXREPLACE(A2,"(?:^|\s*(;))\s*[\d.]+\s*","$1")
在线查看

把两个都拖下来


@JvdV想出了一个很好的解决方案。解决此问题的另一种方法是使用Google Apps脚本制作您自己的脚本,以防您需要更大的灵活性:

function GETDIGITS(inputString) {
  return inputString.toString().match(/(?<=^|\s)([\d.]+)(?=\s|$)/g).join(";");
}

function GETUNITS(inputString) {
  return inputString.toString().split(";").map(str => str.match(/[A-Z]+(\/[A-Z0-9\s]+)?/g)).join(";");
}
函数GETDIGITS(inputString){ 返回inputString.toString().match(/(?str.match(/[A-Z]+(\/[A-Z0-9\s]+)?/g)).join(;); }

哇,救我一命!谢谢!@SimonGIS,不客气。如果它回答了这个问题,请随意接受它(当然也可以接受其他答案)。太棒了!谢谢!