正则表达式以匹配Google内容类别

时间:2018-06-20 15:11:43

标签: regex expression

我希望编写一个正则表达式来捕获Google content categories中的路径组,例如:

/Arts & Entertainment/Comics & Animation/

它构造一组组匹配项,例如:
全场0-40:/Arts & Entertainment/Comics & Animation
第1组:0-40:/Arts & Entertainment/Comics & Animation
第2组。0-21:/Arts & Entertainment

我尝试使用类似以下的内容:((\/.*?[^\/]*)\/.*?[^\/]*)
看到此in regex101,它将执行以上分组。

诀窍是,如果将另一个正斜杠部分添加到同一字符串中,则它应拒绝完全匹配它,因此:

/Arts & Entertainment/Comics & Animation/Anime & Manga

应该没有匹配项

4 个答案:

答案 0 :(得分:2)

您可以提前进行否定查找:

^(?!(\/[^\/]+){3,})((\/.*?[^\/]*)\/.*?[^\/]*)

这将检查要匹配的字符串不包含三组或更多组的斜杠组...

答案 1 :(得分:0)

在正则表达式的开头添加一个保护符以测试三个斜杠或更多的斜杠的存在,并且在这种情况下失败:

^(?![^\/]*\/[^\/]*\/[^\/]*\/[^\/]*$)((\/.*?[^\/]*)\/.*?[^\/]*)

答案 2 :(得分:0)

这可能满足您的需求。

^(?:\/)([^\/]+)(?:\/)?([^\/]+)?(?:\/)?$

  • / foo

enter image description here

  • / foo /

enter image description here

  • / foo / bar

enter image description here

  • / foo / bar /

enter image description here

  • / foo / bar / baz

enter image description here

进行比赛

  • 第1组将始终产生修剪后的第一个类别。

  • 第2组将始终产生修剪后的第二类(如果存在)。

答案 3 :(得分:0)

除了在正则表达式中删除不必要的模式外,还应该使用字符串锚点的开头和结尾(分别是脱字符号^$):

^((\/[^\/]*)\/[^\/]*\/)$

请参见live demo here