我正在寻找一个 Java 正则表达式,以便我可以打破以下表达式:首先使用“-”,但如果在引号中使用“-”,则应忽略它。
例如:一个测试 - 其中“包含” - “” - 一个引号。结果应该是这样的数组:
[0]: a test
[1]: which "contains "-"" inside
[2]: a quotation mark
我不太擅长正则表达式,如果有人能帮助我,我将不胜感激:) 提前谢谢
查看Regex Planet以测试您制作的任何正则表达式
你应该能够实现这一点
String[] splitAray = yourString.Split("[^\"]-[^\"]")
使用向前/向后进行更新,以便不消耗 - 之前和之后的字符
String[] splitAray = yourString.Split("(?!\")-(?!\")")
使用lookbehind和lookahead的解决方案:
String input = "a test - which \"contains \"-\" inside - a quotation mark";
String[] chunks = input.split("(?<!\")-(?!\")");
System.out.println(Arrays.toString(chunks));
输出:
[a test , which "contains "-" inside , a quotation mark]
(?!\")
编辑:将正则表达式( )的第一部分更改为(?<!\")