Regex 用于从(多语言)URL中删除类别的正则表达式?
我试着搜索档案,但什么都不适用 我需要搜索和替换整个网站内部链接的URL 原始格式使用 [域]/[父类别]/[子类别]/[可能的进一步子类别…]/[帖子标题]结构 而新的结构是[domain]/[post title] 更复杂的是,这是一个多语言网站,所以URL结构可以是[domain]。。。或[domain]/it/ 我的正则表达式技能真的很差。有人能建议正确的表达式来标识[父类别]/[子类别]/[可能的进一步子类别…]/部分吗Regex 用于从(多语言)URL中删除类别的正则表达式?,regex,parsing,Regex,Parsing,我试着搜索档案,但什么都不适用 我需要搜索和替换整个网站内部链接的URL 原始格式使用 [域]/[父类别]/[子类别]/[可能的进一步子类别…]/[帖子标题]结构 而新的结构是[domain]/[post title] 更复杂的是,这是一个多语言网站,所以URL结构可以是[domain]。。。或[domain]/it/ 我的正则表达式技能真的很差。有人能建议正确的表达式来标识[父类别]/[子类别]/[可能的进一步子类别…]/部分吗 提前谢谢你 没有/的序列可以写成[^/]+,并且/必须转义到\/
提前谢谢你 没有
/
的序列可以写成[^/]+
,并且/
必须转义到\/
。用这个表达:
^([^/]+\/?[^/]{2}?\/)(.*)([^/]+)$
将匹配:
:序列开始^
:不带斜杠的序列[^/]+
:可选斜杠\/?
:可选的2字符字符串(语言)[^/]{2}?
:任何内容(将被忽略)-延迟捕获*?
:没有[^/]+
的字符串-贪婪捕获/
:序列结束$
函数转换(oldurl){
var m=oldurl.match(/^([^/]+\/?[^/]{2}?\/)(.*)([^/]+$/);
if(m&&m[3])console.log(`${oldurl}->${m[1]}${m[3]},删除:${m[2]}`);
}
转换(“domain.com/it/cat/sub/title1”);
转换(“domain.com/cat/sub/title2”);
转换(“domain.com/it/cat/title3”);
转换(“domain.com/title4”)代码>没有/
的序列可以写成[^/]+
,并且/
必须转义到\/
。用这个表达:
^([^/]+\/?[^/]{2}?\/)(.*)([^/]+)$
将匹配:
^
:序列开始
[^/]+
:不带斜杠的序列
\/?
:可选斜杠
[^/]{2}?
:可选的2字符字符串(语言)
*?
:任何内容(将被忽略)-延迟捕获
[^/]+
:没有/
的字符串-贪婪捕获
$
:序列结束
例如:
函数转换(oldurl){
var m=oldurl.match(/^([^/]+\/?[^/]{2}?\/)(.*)([^/]+$/);
if(m&&m[3])console.log(`${oldurl}->${m[1]}${m[3]},删除:${m[2]}`);
}
转换(“domain.com/it/cat/sub/title1”);
转换(“domain.com/cat/sub/title2”);
转换(“domain.com/it/cat/title3”);
转换(“domain.com/title4”)代码>