如何使用此REGEXEXTRACT函数正确使用正则表达式?

时间:2017-05-19 10:06:07

标签: regex google-sheets

我正在处理订单数据的大型电子表格,该电子表格使用一种独特的散列语法字符串来表示订单商品和属性。

我目前在Google表格中有这些数据,我希望能够利用REGEXEXTRACT函数(https://support.google.com/docs/answer/3098244)来检索每行所需的信息。

功能示例:REGEXEXTRACT(“大海捞针”,“。e {2} dle”)

订单数据很大,我相信我可以使用这个正则表达式函数来隔离我想要的信息。

我需要使用的字符串片段部分的示例。请记住实际的订单字符串比这要长得多:

  • “位置\”; S:5:\ “值\”; S:7:\ “亚特兰大\”
  • “Location \”; s:2:\“value \”; s:8:\“New York \”
  • “Location \”; s:5:\“value \”; s:15:\“barrio de boedo \”

因此每行中的公共字符串是Location,因为在每个订单中多次使用值。

让我看看我是否可以正确地表达这一点:我如何使用正则表达式来指定紧跟在字符串'Location'之后的第4和第5双引号之间的值,以便在上面的示例中,结果将是亚特兰大,纽约,barrio de boedo?

作为参考,barrio de boedo的例子全部如下: \ “; S:7:\” 产品\ “; S:2:\” 31 \ “; S:8:\” form_key \ “; S:16:\” aasdf \“; S:7: \“options \”; a:2:{i:1; s:1:\“2 \”; i:2; s:15:\“barrio de boedo \”;} s:15:\“super_attribute \ “;一个:2:{I:92; S:1:\” 4 \ “; I:132; S:1:\” 9 \ “;} S:3:\” 数量\“; S:1: \ “1 \”;} S:7:\ “选项\”;一个:2:{I:0;一个:7:{S:5:\ “标签\”; S:15:\“语言 - 性别\ “; S:5:\” 值\ “; S:8:\” 水疗男性\ “; S:11:\” print_value \ “; S:8:\” 水疗男性\“; S:9 :\ “option_id \”; S:1:\ “1 \”; S:11:\ “option_type \”; S:9:\ “DROP_DOWN \”; S:12:\ “请将option_value \”; S:1 :\ “2 \”; S:11:\ “custom_view \”; b:0;} I:1;一个:7:{S:5:\ “标签\”; S:8:\ “位置\” ; s:5:\“value \”; s:15:\“barrio de boedo \”; s:11:\“print_value \”; s:15:\“barrio de boedo \”; s:9:\ “option_id \”; S:1:\ “2 \”; S:11:\ “option_type \”; S:5:\ “字段\”; S:12:\ “请将option_value \”; S:15:\ “barrio de boedo \”; s:11:\“custom_view \”; b:0;}} s:15:\“attributes_info \”; a:2:{i:0; a:2:{s:5 :\ “标签\”; S:5:\ “颜色\”; S:5:\ “值\”; S:4:\ “灰色\”;} I:1; A:2:{S:5 :\ “标签\”; S:4:\ “大小\”; S:5:\ “值\”; S:1:\ “L \”;}} S:11:\ “simple_name \”; S :14:\ “T恤灰色-L \”; S:10:\ “simple_sku \”; S:14:\ “T恤灰色-L \”; S:20:\“produc t_calculations \ “; I:1; S:13:\” shipment_type \ “; I:0;}”

1 个答案:

答案 0 :(得分:1)

您需要在REGEXEXTRACT中使用以下模式:

"Location\\?(?:""[^""]*){3}""([^""]+)\\"""

请参阅regex demo

模式为Location\\?(?:"[^"]*){3}"([^"]+)\\",匹配:

  • Location - 子字符串Location
  • \\? - 1个或0个\符号(?使模式可选)
  • (?:"[^"]*){3} - 正好有3次出现(由于限制量词{3}"后跟0或更多(由于*量词)的字符而不是"[^...]是一个否定的字符类,匹配任何字符,但在类中定义的字符)
  • " - 单引号
  • ([^"]+) - 捕获组#1 (其内容将与REGEXEXTRACT一起返回):1个或更多(由于+量词)字符以外的字符"
  • \\" - \"子字符串。

enter image description here