gpt4 book ai didi

regex - 尝试使用 Dart 使用正则表达式剪切 Spotify 链接

转载 作者:IT王子 更新时间:2023-10-29 06:55:48 24 4
gpt4 key购买 nike

我正在尝试将 Spotify 播放列表链接剪切为获取/和 ? 之间的所有字符,但是我无法使用正则表达式。

链接:https://open.spotify.com/playlist/37i9dQZF1DX60OAKjsWlA2?si=2NBcsO0bQS-CQclS1rNoCA我想要什么:37i9dQZF1DX60OAKjsWlA2

到目前为止,我的代码如下所示,但我一无所获:

RegExp regExp = new RegExp(
"\w*\?",
caseSensitive: false,
multiLine: false,
);

当我打印时

print("stringMatch : " +
regExp
.stringMatch(
"https://open.spotify.com/playlist/7x1ebdezDivH4mXAhUdR2S?si=TxHdzuvnTzuoCD5TFR4z_g")
.toString());

它只是打印一个空字符串。我哪里错了?

最佳答案

您需要匹配 1+ 个单词字符,或除 / 之外的字符,直到排除它的问号。

请注意,您需要在常规字符串文字中对双斜杠进行转义,或者在原始字符串文字中对单斜杠进行转义。

在您当前的情况下,您可以使用

r"\w+(?=\?)"

参见 regex demo

或者,

r"[^?/]+(?=\?)"

参见 this regex demo .这里,[^?/]+ 匹配除 ?/ 之外的 1+ 个字符。

非正则表达式的方法是在 ? 上拆分,获取第一项,然后获取最后一个 / 之后的字符 block :

String s = "https://open.spotify.com/playlist/7x1ebdezDivH4mXAhUdR2S?si=TxHdzuvnTzuoCD5TFR4z_g";
String t=s.split("?")[0];
print(t.substring(t.lastIndexOf("/")+1));

输出:7x1ebdezDivH4mXAhUdR2S

关于regex - 尝试使用 Dart 使用正则表达式剪切 Spotify 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57542963/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com