谷歌使用分组和重复来表达正则表达式

时间:2015-11-12 12:41:23

标签: regex google-sheets

希望有人可以帮我解决这个正则表达式。 我有以下文字:

xxx sku: AA123 xxx sku: BB345 xxx sku: CC678

并希望获得值:AA123 BB345 CC678(因此没有sku)

xxx =包含逗号和空格的变量文本。 sku的数量是最小值1,没有最大值。

我如何使用google sheet安排此操作。

我自己做了一个:

sku: ([A-Z]+[0-9]+)

我有两个人:

sku: ([A-Z]+[0-9]+).*sku: ([A-Z]+[0-9]+)

我认为使用{1,}很方便,但我不知道如何.....

编辑:有一些解决方案提供全局修饰符。谢谢你提出这些建议。但我无法使用它们,因为Google表格中的REGEXEXTRACT不支持全局修饰符。

REGEXREPLACE函数支持全局修饰符,但我需要一个“反转”正则表达式。

有人可以帮我解决这个问题,因为我无法弄明白。在此先感谢.....

3 个答案:

答案 0 :(得分:0)

sku:前缀使用非捕获组并使用全局修饰符

(?:sku: )[A-Z0-9]+

Regular expression visualization

Regex101 Demo

答案 1 :(得分:0)

假设您在A1中有该文本,这可能适用于Google表格:

= JOIN(char(9),filter(split(A1," sku:"),regexmatch(split(A1," sku:"),&#34 ; [AZ] {2} [0-9] {3}")))

或使用[A-Z] [0-9] +作为正则表达式。

答案 2 :(得分:0)

= REGEXREPLACE(A1," \ w + sku:","")

如果您希望将值拆分为同一行中的单独单元格,则会返回三个sku,每个之间有一个空格,然后将冒号留在那里并将其用作拆分中的分隔符功能如下:

=拆分(REGEXREPLACE(A10," \ w + sku",""),":")