我正在尝试编写规则以匹配顶级域名后跟五位数。我的问题出现了,因为我现有的pcre与我所描述的匹配,但后来在URL中,然后我想要它。我想让它匹配TLD的第一次出现,而不是其他任何地方。检查这一点的简单方法是在TLD与某些点之前未被“/”字符匹配时进行匹配。我尝试使用负面观察,但这不起作用,因为它只回顾一个单个字符。
例如:目前的工作方式
domain.net/stuff/stuff=www.google.com/12345
匹配.com / 12345即使我不想要这个匹配,因为它不是网址中的第一个TLD
例如:我希望它如何运作
domain.net/12345/stuff=www.google.com/12345
匹配.net / 12345并忽略.com / 12345
上的后一场比赛我目前的表达
(\.[a-z]{2,4})/\d{5}
编辑:改写它所以如果将来有人遇到同样的问题,也许问题会更清楚。
答案 0 :(得分:1)
你非常接近:)
您需要确保在匹配您要查找的内容之前(例如:(\.[a-z]{2,4})/\d{5}
),自行开始以来您没有遇到任何/
。
我建议您在当前的正则表达式之前简单地预先^[^\/]*\.
。
因此,产生的正则表达式将是:
^[^\/]*\.([a-z]{2,4})/\d{5}
它是如何运作的?
^
断言这是测试过的字符串[^\/]*
接受任何不包含/
\.([a-z]{2,4})/\d{5}
是您要匹配的模式(.
后跟2到4个小写字符,然后是/
和至少5个数字。答案 1 :(得分:0)