我正在尝试匹配一个字符串,例如“ https://open.spotify.com/track/1c3v8Ww4q8Vah92JBxAzxi?si=oqw6SQtxTVqJuoe2C_XrzQ不错,” 并提取最后一个斜杠之后的部分,在本例中为“ 1c3v8Ww4q8Vah92JBxAzxi?si = oqw6SQtxTVqJuoe2C_XrzQ”。有人可以帮我找出适合的正则表达式吗?我已经尝试过以下方法:
/.*spotify\.com.*/
/.*spotify\.com.\/track\/.*/
/.*spotify\.com.\/track.*/
/.*spotify\.com\.\/track.*/
/.*spotify\.com\.\/track\/.*/
/.*spotify\.com\..*/
/.*spotify\.com\/.*/
/.*spotify\.com\/track\/.*/
/.*spotify\.com\/track\/(.*)/
/.*spotify\.com\/track\/(.*)\s*/
/.*spotify\.com\/track\/(.*)\s*$/
/.*spotify\.com\/track\/(\S)*/
/.*?spotify\.com\/track\/(\S)*/
/\/(.*)?\s/
,但通常最终会匹配整个链接,例如“ https://open.spotify.com/track/1c3v8Ww4q8Vah92JBxAzxi?si=oqw6SQtxTVqJuoe2C_XrzQ”
答案 0 :(得分:4)
也许像这样:
\/track\/([^ ]*)
https://regex101.com/r/PwRXlA/1
/track/
[^ ]*
匹配所有内容,直到空格标记js时:
'https://open.spotify.com/track/1c3v8Ww4q8Vah92JBxAzxi?si=oqw6SQtxTVqJuoe2C_XrzQ omg this ones nice'.match(/\/track\/([^ ]*)/)[1]
输出
“ 1c3v8Ww4q8Vah92JBxAzxi?si = oqw6SQtxTVqJuoe2C_XrzQ”
答案 1 :(得分:0)
使用\w
将在这里为您带来很多帮助。它匹配任何字母,数字或下划线。等效于[a-zA-Z0-9 _]。
track = "https://open.spotify.com/track/1c3v8Ww4q8Vah92JBxAzxi?si=oqw6SQtxTVqJuoe2C_XrzQ omg this ones nice";
re = /track\/(\w+\?\w+=\w+)\s/;
match = track.match(re);
match[1]; # 1st parenthesized group: "1c3v8Ww4q8Vah92JBxAzxi?si=oqw6SQtxTVqJuoe2C_XrzQ"
match[0]; # the entire match: "track/1c3v8Ww4q8Vah92JBxAzxi?si=oqw6SQtxTVqJuoe2C_XrzQ "