java regex在xpath字符串中去除根元素

时间:2014-06-08 03:50:10

标签: java regex groovy

从xpath字符串中剥离根元素的最简单方法是什么,只要路径以该模式开头,就像这样:{/ p>

/\w/变为/root/foo/bar/sushi

foo/bar/sushi变为/my/t/fine/path

我有这个工作:

t/fine/path

但如果String path = '/root/foo/bar/sushi' path.replaceFirst('\\/(.*?)\\/', '') ,我不想要改变任何内容,因为这不是以path='root/foo/bar/sushi'开头,但它仍然会删除/的第一次出现,结果为/element/。我理解为什么,只是在验证启动模式时遇到了问题。

1 个答案:

答案 0 :(得分:1)

您需要^锚点来指定我们在字符串的开头寻找/root/。最简单的是,这个正则表达式将会这样做:

^/[^/]*/

在Java代码中,这可能如下所示:

String replaced = your_original_string.replaceAll("^/[^/]*/", "");

如果你知道你所看到的是一条路径,那么这是有效的。

解释正则表达式

^                        # the beginning of the string
/                        # '/'
[^/]*                    # any character except: '/' (0 or more times
                         # (matching the most amount possible))
/                        # '/'

选项2:同时验证

另一方面,如果您不确定字符串是否为路径,则此正则表达式不合适,因为它将接受/root/

之后的任何字符

在这种情况下,您可以指定字符,例如

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

用于数字,字母,下划线和连字符。可以进一步细化此验证,以确保字符以正确的顺序出现。

对于此正则表达式,您将替换为:

String replaced = your_original_string.replaceAll("^/[^/]*/([\\w-/]+)", "$1");