我正在尝试创建一个与内部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”
我需要提取每行的示例。
感谢。
答案 0 :(得分:2)
您可以使用
/\w+(\/[\w-]+)+/
请参阅regex demo。
<强>详情
\w+
- 1 + word chars (\/[\w-]+)+
- 1个或多个连续序列
\/
- /
字符[\w-]+
- 1个字或-
字符。提示:您可以使用首选语言在字符串中读取一种CSV解析器,然后只返回符合^\w+(\/[\w-]+)+$
模式的字段(此处,^
匹配字符串的开头) string和$
匹配字符串的结尾。)
答案 1 :(得分:0)
这很具体。经过一些测试,我想到了这个。我们还有需要检查的子域。
(?!https?:)/?[^/][^/].*|(https?:)?//([^.]*\.)?yourdomain\.com(/.*)?
也许有人可以做得更好,但这对我有用。