【发布时间】:2017-02-02 09:02:15
【问题描述】:
我需要解析一组 url 并在特殊条件下从 url 中提取特定元素。为了进一步解释,考虑一组 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. rest/of/the/url 用于 url 3,因为它没有“关键字”)。整个事情应该在一个正则表达式中完成。
我的进步:
我能够将应用名称和 URL 的其余部分解析成组,但无法应用条件。
我找到了一种选择没有“关键字”的stings的方法,我不确定这是否是正确的方法:
^((?!.\*keyword).\*)$- 接下来,为了结合以上两个,我尝试了一个经过长时间搜索后找到的东西,它的语法是
(?(?=regex)then|else)Reference。结果是:(?(?=^((?!.*keyword).*)$)\1)
但是它说无效的组结构。
我已经阅读了许多 stackoverflow 条目和教程,但无法达到实际要求。请帮我解决这个问题。
【问题讨论】:
-
“我有两个任务”什么是第二个任务?
-
根据第一个任务的结果对组件进行分组(过滤不带关键字的 url)。抱歉不清楚,我已经编辑了我的问题。
-
如果“关键字”在字符串中什么都不做?
-
是的,完全忽略它。
-
不确定是否可以使用单个
RegExp
标签: javascript regex regex-negation regex-lookarounds