gpt4 book ai didi

javascript - JS 正则表达式 : Parse urls with conditions

转载 作者:行者123 更新时间:2023-11-27 22:30:04 25 4
gpt4 key购买 nike

我需要解析一组网址并在特殊条件下从网址中提取特定元素。为了进一步解释它,考虑一组 url:

http://www.example.com/appName1/some/extra/parts/keyword/rest/of/the/url http://www.somewebsite.com/appName2/some/extra/parts/keyword/rest/of/the/url http://www.someothersite.com/appname3/rest/of/the/url

如您所见,有两组网址,一组包含“关键字”一词,另一组则没有。在我的代码中,我将收到域名后的 url 部分(例如:/appName1/some/extra/parts/keyword/rest/of/the/url)

我有两个任务,一是检查 url 中是否存在“keyword”一词,二是仅当 url 中不存在“keyword”时才执行,解析 url 以获取两个组作为 appName以及 url 的其余部分(例如:grp 1. appName3 和 grp 2. url 3 的其余/of/the/url,因为其中没有“关键字”)。整个事情应该在一个正则表达式中完成。

我的进步:

  • 我能够将应用名称和其余网址分组解析,但无法应用条件。

  • 我找到了一种选择其中没有“关键字”的刺痛的方法,我不确定这是否是正确的方法:^((?!.\*keyword)。\*)$

  • 接下来,为了将上述两者结合起来,我尝试了经过长时间搜索后找到的一些内容,其语法为 (?(?=regex)then|else) Reference 。结果是:
    (?(?=^((?!.*keyword).*)$)\1)
    但它说无效的组结构。

我浏览了很多stackoverflow条目和教程,但无法达到实际要求。请帮我解决这个问题。

最佳答案

是的,这实际上是可能的。据我了解,您的情况有以下几种:

  • /appName/some/extra/parts/keyword/rest/of/the/url
  • /appName/rest/of/the/url

您希望您的正则表达式根本不匹配第一个,而在第二种情况下,您希望“appName”在一个组中,“rest/of/the/url”在另一个组中。以下正则表达式将执行此操作:

^(?!.*\/keyword\/)\/(.*?)\/(.*)$

说明:

  • ^ 断言字符串开头的位置`
  • (?!.*\/keyword\/) 是一个负向前查找,向前查找以确保字符串不包含/keyword/。这就是魔法发生的地方
  • \/ 匹配“/”,即域名后面的斜杠
  • (.*?)\/ 贪婪地捕获第一组(示例中的应用程序名称),直到下一个斜杠
  • (.*)$ 是捕获“rest/of/the/url”的组

关于javascript - JS 正则表达式 : Parse urls with conditions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39678770/

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