希望您能帮助我格式化正确的RegEx。
我想:
1) 包括所有到domain.com(.*)的流量
- 排除所有子域
- 除了到特定URIsub.domain.com/文件夹(.*)的所有流量
2) 包括到特定URI-extdomain.com/folder(.*)的所有流量
一些示例:
包括:
- domain.com
- domain.com/team
- domain.com/blog
- 具体:hello.main.com/bonjour
- 具体:bye.extdomain.com/aurevoir/salut
排除:
- 你好.domain.com
- 再见.domain.com
- 所有其他子域&其他站点
已经尝试了以下内容,但它仍然包括子域:
(domain'.com|sub'.domain'.com/folder(.*)|sub'.domain'.com/folder(.*))
正则表达式/domain'.com/
将匹配任何子域,因为它将匹配字符串的一部分。使用/^domain'.com/
只捕获以"domain.com"开头的字符串(没有子域)。
请注意,这假设您从url(http://)中删除了协议。
你发布的RegEx的第二部分与第三部分相同-我想你指的是两种特殊情况-他们也需要"^"开头的
不需要末尾的(.*)-如果没有它,它将与字符串的一部分匹配。
(^domain'.com|^hello'.domain'.com'/bonjur|'^bye.extdomain'.com'/folder(.*))
解释-接受
^domain'.com
-所有以"domain.com"开头的URL(无子域)- 或
^hello'.domain.com
-所有以子域"hello.domain.com"开头的URL - 或
'^bye.extdomain'.com
-所有以"bye.extdomain.com"开头的URL
可选-因为所有3个组件都以相同的方式启动,所以可以提取公共前缀^
:
^(domain'.com|hello'.domain'.com'/bonjur|bye'.extdomain'.com'/folder2)
有关阅读正则表达式的帮助,请访问此网站:http://www.regexper.com/#%5E(域%5C.com%7你好%5C.domain%5C.com%5C%2Bonjur%7再见%5C.extdomain%5C.com.5C%2Folder2)
我建议使用以下正则表达式:
'#'b(?:domain'.com|hello'.domain'.com/bonjour|bye'.extdomain'.com/aurevoir/salut)'b#i'
我在正则表达式的开头添加了一个"^",要求字符串以domain.com开头。在第二个子句中,它允许domain.com后面的文件夹。第三个子句允许子域上的任何内容,前提是它后面有一个"/"和一些文本。
(^domain'.com$|^domain'.com'/'w*|'w*'.domain'.com'/'w*)