gpt4 book ai didi

javascript - 正则表达式在一个字符之后和另一个字符之前查找单词(如果包含)

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:35:49 26 4
gpt4 key购买 nike

我有一个像这样的网址:

image/media-group/rugby-league-programme-covers-3436?sort=title

image/media-group/rugby-league-programme-covers-3436

我需要获取媒体组之后的所有内容,但不包括 ? 或之后的任何内容。

所以在这两种情况下,rugby-league-programme-covers-3436 都是我需要返回的内容

我使用了正则表达式 /media-group/(.*)\?,它适用于有查询字符串的实例,但不适用于没有查询字符串的实例。

我正在使用下面的代码

var patt=new RegExp('/media-group/(.*)\?');
return patt.exec(url)[1];

非常感谢您对此的帮助

最佳答案

我认为最好的模式是:

/^[^\#\?]+\/media-group\/([^\?]+).*$/

分解为:

^                 - start of string
[^\#\?]+ - one or more non-hash, non-question-marks
\/ - literal char
media-group - literal chars
\/ - literal char
( - start capture group
[^\?]+ - one or more chars non-question-marks
) - end of capture group
.* - zero or more chars
$ - end of string

之所以可行,是因为 [^\?]+ 是“贪婪的”,因为它会尝试尽可能长的匹配,它包含一个问号后跟任意字符,或者什么都不包含,因为所有字符都到最后的字符串已经在非问号捕获组中被捕获。

所以,使用

var RE=new RegExp(/^[^\#\?]+\/media-group\/([^\?]+).*$/),
url="image/media-group/rugby-league-programme-covers-3436?sort=title";

console.log(url.match(RE)[1])

打印:rugby-league-programme-covers-3436 并将 url 更改为 image/media-group/rugby-league-programme-covers-3436,生成同样的结果。

更新

根据 David Foerster 的评论修改了模式。

关于javascript - 正则表达式在一个字符之后和另一个字符之前查找单词(如果包含),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17688626/

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