我正在使用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
答案 0 :(得分:2)
这可能是最简单的方法:
[^\/\d][^\/]*\/\d+$
或限制到特定域:
^https?:\/\/discuss.dwolla.com\/.*[^\/\d][^\/]*\/\d+$
请参阅live demo。
此正则表达式要求最后一部分为全部数字,第二部分要求至少有1位非数字。
答案 1 :(得分:0)
这是一个java正则表达式可能符合您在java风格中的要求。您可以在{N}
^https://discuss.dwolla.com/t/[\\w|-]+/[\\d]+$