获取部分网址的条件

时间:2018-02-05 08:57:39

标签: regex regex-negation regex-lookarounds regex-group

基于此示例:http://example.com/cat1/tag/this%20is%20page/cat2,我需要制作一个正则表达式才能获得/tag/<nextSegment>仅当此模式被其他段跟随或前面时,而不是单独使用。

我需要的结果始终为:http://example.com/tag/<fowardSegment>仅当/tag/<fowardSegment>位于其他段或不允许的字符之前或之后。

我尝试使用这个正则表达式:((?:/[A-Za-z0-9-]+)+)?(/tag/[A-Za-z0-9-%]+)+(/.*)?但是当它独自时,模式也被捕获(正如你在链接中看到的最后一个示例字符串)。

1 个答案:

答案 0 :(得分:0)

也许你想要的是:@Query("select distinct m from Model m join m.userModel um join um.user u where u.username = ?1") List<Model> findModelsByUserName(String userName);

修改

我在下面的评论中意识到需要匹配的额外内容:

/(?<=https?:\/\/.*)((?:\/[\w]+)*)((?:\/tag)(?:\/[\w%?=.-]+){2,})$/

JS中的一个示例用法:

&#13;
&#13;
/(?<=https?:\/\/.*|[\w_.]+)(?:((?:\/[\w]+)+)((?:\/tag)(?:\/[\w%?=.-]+))|((?:\/[\w]+))*((?:\/tag)(?:\/[\w%?=.-]+){2,}))$/
&#13;
&#13;
&#13;

Regex101

上查看