我需要解析一组网址,并在特殊条件下从网址中提取特定元素。要进一步解释,请考虑一组网址:
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
正如您所看到的,有两组网址,其中一组有"关键字"在其中和其他人不相同。在我的代码中,我将在域名之后收到网址的一部分(例如:/ appName1 / some / extra / parts / keyword / rest / of / the url)。
我有两个任务,一个检查单词"关键字"存在于网址中,其次,仅当"关键字"在url中不存在,解析url以获取appName和url 的其余部分(例如:grp 1. appName3和grp 2. rest / of / url for url 3,因为它没有& #39; t"关键字"在其中)。整个事情应该在一个正则表达式中完成。
我的进步:
我能够将应用名称和其他网址分组,但无法应用该条件。
我找到了一种方法来选择没有"关键字"在其中,我不确定它是否是正确的方法:^((?!.\*keyword).\*)$
(?(?=regex)then|else)
Reference。结果是:
(?(?=^((?!.*keyword).*)$)\1)但它表示无效的群组结构。
我经历了很多stackoverflow条目和教程,但无法达到实际要求。请帮我解决这个问题。
答案 0 :(得分:1)
是的,事实上这是可能的。据我了解,您有以下情况:
/appName/some/extra/parts/keyword/rest/of/the/url
/appName/rest/of/the/url
您希望您的正则表达式与第一个完全匹配,而在第二种情况下,您希望" appName"在一个组和"休息/ / / url"在另一个。以下正则表达式将会这样做:
^(?!.*\/keyword\/)\/(.*?)\/(.*)$
说明:
^
在字符串`(?!.*\/keyword\/)
是一个负向前瞻,并展望未来以确保该字符串不包含/ keyword /。这就是神奇发生的地方\/
匹配" /
",即域名后面的斜杠(.*?)\/
贪婪地捕获第一组(示例中的appname)直到下一个斜杠(.*)$
是捕获"休息/ / / url"