内部URL的正则表达式

时间:2018-04-21 19:43:51

标签: regex

我正在尝试创建一个与内部URL(不包含域或http的内容)匹配的正则表达式,我可以在这样的文件中找到它:

  

类别/子类别/子类别/项目-1

为此我正在使用:

/\w+\/.+\/[\w\-]+/

但有些网址是这样的:

  

类别/子类别

我需要一个能够捕捉到它们的正则表达式。我是否必须创建另一个或者是否可以创建一个与两个示例相匹配的?对于BASH脚本,但如果你有一个想法,它是否适用于其他引擎无关紧要。

谢谢!

更新:我忘记了上下文。文件的每一行都是这样的:

  

“11”, “类别/子类别/子类别/项目-1”, “的index.php选项= com_trombinoscopeextended&安培; ITEMID = 125安培; LANG = ES&安培;图= trombinoscope”, “251”, “0” “0000-00-00”, “”, “”, “”, “”, “”, “”, “0”

或者像这样:

  

“4”, “类别/子类别”, “的index.php选项= com_trombinoscopeextended&安培; ITEMID = 121安培; LANG = ES”, “0”, “1”, “0000-00-00”, “”, “”, “”, “”, “”, “”, “0”

我需要提取每行的示例。

感谢。

2 个答案:

答案 0 :(得分:2)

您可以使用

/\w+(\/[\w-]+)+/

请参阅regex demo

<强>详情

  • \w+ - 1 + word chars
  • (\/[\w-]+)+ - 1个或多个连续序列
    • \/ - /字符
    • [\w-]+ - 1个字或-字符。

提示:您可以使用首选语言在字符串中读取一种CSV解析器,然后只返回符合^\w+(\/[\w-]+)+$模式的字段(此处,^匹配字符串的开头) string和$匹配字符串的结尾。)

答案 1 :(得分:0)

这很具体。经过一些测试,我想到了这个。我们还有需要检查的子域。

(?!https?:)/?[^/][^/].*|(https?:)?//([^.]*\.)?yourdomain\.com(/.*)?

也许有人可以做得更好,但这对我有用。