定义匹配以数字结尾的网址的正则表达式,除非之后有其他内容

时间:2015-07-06 16:46:04

标签: regex

我正在使用Scrapy来抓取一个网站。我坚持正确定义提取链接的规则。 具体来说,我需要帮助来编写一个允许网址的正则表达式:

hdfs dfs -ls s3a:// https://discuss.dwolla.com/t/the-dwolla-reflector-is-now-open-source/1352 https://discuss.dwolla.com/t/enhancement-dwolla-php-updated-to-2-1-3/1180

同时禁止像这样的网址

https://discuss.dwolla.com/t/updated-java-android-helper-library-for-dwollas-api/108

换句话说,我想要以数字结尾的网址(例如,示例abpve中的https://discuss.dwolla.com/t/the-dwolla-reflector-is-now-open-source/1352/12),除非在这些数字之后有任何后续内容(例如,上例中的/1352)< / p>

我绝不是正则表达式的专家,我只能想出/12甚至是\/(\d+)$之类的东西,但两者都排除了不需要的网址,因为它们都是捕获地址中的最后一位数字。

---更新---

对不起,首先不清楚。此添加是为了澄清URLS的数字可以更改,因此^https:\/\/discuss.dwolla.com\/t\/\S*\/(\d+)$不固定。因此,另一个被接受的网址示例也是:

/1352

2 个答案:

答案 0 :(得分:2)

这可能是最简单的方法:

[^\/\d][^\/]*\/\d+$

或限制到特定域:

^https?:\/\/discuss.dwolla.com\/.*[^\/\d][^\/]*\/\d+$

请参阅live demo

此正则表达式要求最后一部分为全部数字,第二部分要求至少有1位非数字。

答案 1 :(得分:0)

这是一个java正则表达式可能符合您在java风格中的要求。您可以在{N}

中指定除 N 之外的位数
^https://discuss.dwolla.com/t/[\\w|-]+/[\\d]+$