Regex 用于从(多语言)URL中删除类别的正则表达式?

Regex 用于从(多语言)URL中删除类别的正则表达式?,regex,parsing,Regex,Parsing,我试着搜索档案,但什么都不适用 我需要搜索和替换整个网站内部链接的URL 原始格式使用 [域]/[父类别]/[子类别]/[可能的进一步子类别…]/[帖子标题]结构 而新的结构是[domain]/[post title] 更复杂的是,这是一个多语言网站,所以URL结构可以是[domain]。。。或[domain]/it/ 我的正则表达式技能真的很差。有人能建议正确的表达式来标识[父类别]/[子类别]/[可能的进一步子类别…]/部分吗 提前谢谢你 没有/的序列可以写成[^/]+,并且/必须转义到\/

我试着搜索档案,但什么都不适用

我需要搜索和替换整个网站内部链接的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”)