提问人:G0000000se 提问时间:12/10/2022 最后编辑:bobble bubbleG0000000se 更新时间:12/11/2022 访问量:42
是否有正则表达式可以在以下字符串中获取第 5 次出现?
Is there a Regex to get 5th occurence in a following string?
问:
我有一个以下字符串(好吧,实际上是UTM):
bla-ble-blo-bli-this-bad-blau-bleu
bla-ble-blo-bli-this_good-blau-bleu
UTM 中的第 5 个位置称为“主题”,目前由于我使用 SQL 进行任何类型的转换,因此我使用一组非常简单的规则和一些查找表,因为我在“”上拆分字符串,但正如您所看到的,它在“this-bad”上失败,因为它有一个“”,但它在“”上按预期工作。-
-
this_good
是否有正则表达式可以获得此“主题”部分的第 5 次出现?我尝试遵循正则表达式,但我真的不知道如何设置它只找到第 5 次出现。有问题的正则表达式:.\w+(?=-[^-]*$)
谢谢!
答:
3赞
Bohemian
12/10/2022
#1
去掉尾巴和头部,留下第 5 部分:
select regexp_replace(regexp_replace('bla-ble-blo-bli-this-bad-blau-bleu', '(-[^-]+){2}$', ''), '([^-]+-){4}', '')
观看现场演示。
评论
0赞
G0000000se
12/10/2022
做伎俩。谢谢!
0赞
G0000000se
12/10/2022
嗯,看来我说得太早了。例如,如果你看一下下面的演示,它就不起作用了:链接
0赞
Bohemian
12/10/2022
@G0000000se 你发布的链接是我的链接。如果您想进行新的测试,您需要单击“更新”。或者只是在这里发送消息,其中包含不起作用的输入以及您期望的输出。
0赞
G0000000se
12/10/2022
哦,我的错。在这种情况下,您可以在此处看到它(实际的“实时”示例):预期结果。而这个结果很糟糕。在第二个示例中,我需要将“Superapp”和“dis”放在两个单独的列中。这就是为什么很难真正想出一个模式的原因。
0赞
Bohemian
12/11/2022
@G0000000se如何区分具有第 5 项的 8 项字符串和具有第 5 项的 7 项字符串?dis-bet-ret-int-Supercard-CashBack-dis-all
Supercard
Supercard-CashBack
评论
this-bad
打破了模式,这是模式识别中不起作用的问题。也可能出现在 1st、2nd......第六?还是只有第 5 名?-
this-bad