Apify:PseudoUrl 正则表达式以匹配包含给定关键字的网址
Apify: PseudoUrl regex to match urls containing a given keyword
Apify PseudoUrl 支持 JavaScript 风格的正则表达式来匹配 URL。
我尝试按照 RegEx 来匹配包含特定关键字的所有 url -
//not working
http://www.example.com/[*foo*]
例如,如果网站有以下链接:
http://www.example.com/pages/
http://www.example.com/pages/bar
http://www.example.com/pages/foo/bar.html
http://www.example.com/pages/test-foo-test.html
http://www.example.com/pages/foo.html
正则表达式应匹配最后 3 个网址。但是,正则表达式不起作用。
您需要检查 foo
域内容之后的任何位置是否存在:
http:\/\/www\.example\.com\/.*foo
您还将常规 javascript 正则表达式传递给 PseudoUrl
构造函数。
您需要 ^http:\/\/www.example.com\/pages\/.*foo
.
形式的正则表达式
假设您想对多个关键字执行此操作,您可以使用如下内容:
const Apify = require('apify');
const regexEscape = require('regex-escape');
function createKeywordUrlRegex(baseUrl, keyword) {
const regexStr = `^${regexEscape(baseUrl)}.*?${regexEscape(keyword)}`;
// remove the i if you want to match to be case-sensitive
return new RegExp(regexStr, 'i');
}
const purl = new Apify.PseudoUrl(createKeywordUrlRegex('http://www.example.com/pages/', 'foo'));
// print out the examples
const examples = [
'http://www.example.com/pages/',
'http://www.example.com/pages/bar',
'http://www.example.com/pages/foo/bar.html',
'http://www.example.com/pages/test-foo-test.html',
'http://www.example.com/pages/foo.html'
];
for(let example of examples)
console.log(example, purl.matches(example) ? 'MATCH!' : 'IGNORED');
您可以将 http://www.example.com/pages/
之类的基础 url 和 foo
之类的关键字传递给 createKeywordUrlRegex
,它会为您生成上面提到的正则表达式。
Apify PseudoUrl 支持 JavaScript 风格的正则表达式来匹配 URL。
我尝试按照 RegEx 来匹配包含特定关键字的所有 url -
//not working
http://www.example.com/[*foo*]
例如,如果网站有以下链接:
http://www.example.com/pages/
http://www.example.com/pages/bar
http://www.example.com/pages/foo/bar.html
http://www.example.com/pages/test-foo-test.html
http://www.example.com/pages/foo.html
正则表达式应匹配最后 3 个网址。但是,正则表达式不起作用。
您需要检查 foo
域内容之后的任何位置是否存在:
http:\/\/www\.example\.com\/.*foo
您还将常规 javascript 正则表达式传递给 PseudoUrl
构造函数。
您需要 ^http:\/\/www.example.com\/pages\/.*foo
.
假设您想对多个关键字执行此操作,您可以使用如下内容:
const Apify = require('apify');
const regexEscape = require('regex-escape');
function createKeywordUrlRegex(baseUrl, keyword) {
const regexStr = `^${regexEscape(baseUrl)}.*?${regexEscape(keyword)}`;
// remove the i if you want to match to be case-sensitive
return new RegExp(regexStr, 'i');
}
const purl = new Apify.PseudoUrl(createKeywordUrlRegex('http://www.example.com/pages/', 'foo'));
// print out the examples
const examples = [
'http://www.example.com/pages/',
'http://www.example.com/pages/bar',
'http://www.example.com/pages/foo/bar.html',
'http://www.example.com/pages/test-foo-test.html',
'http://www.example.com/pages/foo.html'
];
for(let example of examples)
console.log(example, purl.matches(example) ? 'MATCH!' : 'IGNORED');
您可以将 http://www.example.com/pages/
之类的基础 url 和 foo
之类的关键字传递给 createKeywordUrlRegex
,它会为您生成上面提到的正则表达式。