首页 > 解决方案 > 使用正则表达式自定义排序?

问题描述

我有两列,第一列是名称列表,第二列是他们的评级。我想使用自定义排序,为此我使用以下内容(在此处找到):

=sort(A33:B50;match(B33:B50;{"Great";"Good";"OK";"Bad");true)

哪个有效,但我的评分实际上是:

有什么方法可以将上面的公式与正则表达式结合起来吗?类似这样的东西:

=sort(A33:B50;match(B33:B50;{"Great*";"Good*";"OK*";"Bad*");true)

这并没有真正做任何事情。检查了谷歌表的正则表达式公式,但在这种情况下找不到任何可以解决问题的方法。

干杯!

PS:解决方法是

=sort(A33:B50;match(B33:B50;{"Great+";"Great";"Great-";"Good+";"Good";"Good-";"OK+";"OK";"OK-";"Bad+";"Bad";"Bad-");true)

但我很好奇是否有一种不那么乏味的方法

标签: regexsortinggoogle-sheetsre2

解决方案


=sort(A1:B7;match(regexextract(B1:B7;"Great|Good|OK|Bad");{"Great";"Good";"OK";"Bad"};0);true)

  • 管道|用于正则表达式中的 OR 登录。
  • 改变A1:B7B1:B7你的范围。

编辑

  • 排序Good+ Good Good-更改正则表达式为"Great|Good\+|Good\-|Good|OK|Bad",将数组更改为{"Great";"Good+";"Good";"Good-";"OK";"Bad"}

反直觉:正则提取中的顺序是 Good+|Good-|Good 并且在数组 {"Great";"Good+";"Good";"Good-";"OK";"Bomb"} 中(Good 在正则表达式已经在捕获 Good- 实例)


推荐阅读