Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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
Regex 使用正则表达式进行自定义排序?_Regex_Sorting_Google Sheets_Re2 - Fatal编程技术网

Regex 使用正则表达式进行自定义排序?

Regex 使用正则表达式进行自定义排序?,regex,sorting,google-sheets,re2,Regex,Sorting,Google Sheets,Re2,我有两列,第一列是名字列表,第二列是他们的评级。我想使用自定义排序,为此我使用以下命令(找到它) : 这是可行的,但我的评分实际上是: 太好了 伟大的 伟大的- 好, 好 好的- 好, 有没有办法把上面的公式和正则表达式结合起来?大致如下: =sort(A33:B50;match(B33:B50;{"Great*";"Good*";"OK*";"Bad*");true) 这真的没什么用。查看了Google sheets的正则表达式,但在这种情况下找不到任何能起作用的正则表达式 干杯 PS

我有两列,第一列是名字列表,第二列是他们的评级。我想使用自定义排序,为此我使用以下命令(找到它) :

这是可行的,但我的评分实际上是:

  • 太好了
  • 伟大的
  • 伟大的-
  • 好,
  • 好的-
  • 好,
有没有办法把上面的公式和正则表达式结合起来?大致如下:

=sort(A33:B50;match(B33:B50;{"Great*";"Good*";"OK*";"Bad*");true)
这真的没什么用。查看了Google sheets的正则表达式,但在这种情况下找不到任何能起作用的正则表达式

干杯

PS:一个解决方法是

=sort(A33:B50;match(B33:B50;{"Great+";"Great";"Great-";"Good+";"Good";"Good-";"OK+";"OK";"OK-";"Bad+";"Bad";"Bad-");true)
但我很好奇,是否有一种不那么单调的排序方法(A1:B7;匹配(regexextract(B1:B7;“Great | Good | OK | Bad”);{“Great”;“Good”;“OK”;“Bad”};0;true)

  • 管道
    |
    用于或登录Regex
  • A1:B7
    B1:B7
    更改为您的范围
编辑

  • 对于排序
    Good+Good-Good-
    将正则表达式更改为
    “Great | Good\+| Good\-| Good | OK | Bad”
    ,将数组更改为
    {“Great”;“Good+”;“Good”;“OK”;“Bad”
反直觉:regextract中的顺序是Good+| Good-| Good 在数组中{“Great”;“Good+”;“Good”;“Good-”;“OK”;“Bomb”}(正则表达式中的Good已经捕获了Good-实例)


这实际上排序不正确(示例:)。结果的顺序是:“非常非常好-(?)非常好+(?)非常好(?)好,好,好,好,好,好,坏”对不起,我在
匹配
函数中错过了0以获得精确匹配。请尝试排序(A1:B7;匹配(regexextract(B1:B7;“Great | Good | OK | Bad”){“Great”;“Good”;“OK”;“Bad”};0);true)。它首先排序Good-Good Good+(有没有办法将其添加到公式中?)。排序的其余部分可以正常工作。找到了一种方法:=sort(A33:B50;match(regexextract(B33:B50;“Great | Good\+| Good\-| Good | OK | Bomb”);{“Great”;“Good+”;“Good”;“Bomb”;(0);true)这是违反直觉的:regextract中的顺序是Good\+| Good\-| Good-| Good,Good和数组中的顺序是{“Great”;“Good”;“Good”;“Good”;“Bomb”;“Good”;“Bomb”}(我猜正则表达式中的Good已经捕捉到了好的实例)@jlo,谢谢你的研究。你说得对,Good首先捕捉到了好的实例。我已经编辑了答案。
=sort(A33:B50;match(B33:B50;{"Great+";"Great";"Great-";"Good+";"Good";"Good-";"OK+";"OK";"OK-";"Bad+";"Bad";"Bad-");true)