从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/
。我理解为什么,只是在验证启动模式时遇到了问题。
答案 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");