带有一个字符选择器的CSS子组合器的Java正则表达式匹配

带有一个字符选择器的CSS子组合器的Java正则表达式匹配,java,css,regex,xpath,Java,Css,Regex,Xpath,我想用CSS子组合符“>”替换XPath子组合符“/” 考虑到不同的现有CSS选择器,在跳过一些空白后,我尝试匹配正则表达式: ([\w\-\*\.\#]|[\[[^\]]+\]])>([\w\-\*\.\#]|\[ ) 并将其替换为: $1/$2 这适用于我发现的所有情况,只有一种情况除外:其中一个选择器只有一个字符,并且在两个子组合符之间被捕获,例如:“div>a>div” 有人知道如何正确处理一个字母字符吗 我在这里留下一些例子: 谢谢 我必须重复亚历克斯的问题。“为什么不直接用

我想用CSS子组合符“>”替换XPath子组合符“/”

考虑到不同的现有CSS选择器,在跳过一些空白后,我尝试匹配正则表达式:

([\w\-\*\.\#]|[\[[^\]]+\]])>([\w\-\*\.\#]|\[ )
并将其替换为:

$1/$2
这适用于我发现的所有情况,只有一种情况除外:其中一个选择器只有一个字符,并且在两个子组合符之间被捕获,例如:“div>a>div”

有人知道如何正确处理一个字母字符吗

我在这里留下一些例子:


谢谢

我必须重复亚历克斯的问题。“为什么不直接用/”替换>

但是,如果您坚持检查>的两边都有内容,那么环顾四周就是最好的选择

(?<=[\w\-\*\.\#]|[\[[^\]]+\]])>(?=[\w\-\*\.\#]|\[ )
(?(?=[\w\-\*\.\\\\\\\\\\.\\\\\\\\\.\\\\\\\.\\\\\\\\.\\\\\\\\\.\\\\\\\\\\\[)

这正好抓住了>所以用
/
替换

为什么不用
/
替换
呢?我可以使用replace,但是我使用的整个CSS到XPath转换器是用一组正则表达式和replaceAll()替换的。数组的设置顺序很重要。我想找到一种方法来保持这种结构。它与您给我的表达式一致,谢谢!