我正在寻找一个Java正则表达式,以便我可以打破以下表达式: 首先使用' - ',但如果在引号中使用' - ',则可以忽略它。如何形成一个Java正则表达式来拆分字符串?
例如:一个测试 - 其中“包含” - “”里面 - 一个引号。 结果应该是这样的一个ARRY:
[0]: a test
[1]: which "contains "-"" inside
[2]: a quotation mark
我不是正则表达式非常好,将是充满感激,如果有人能帮助我:)提前
我正在寻找一个Java正则表达式,以便我可以打破以下表达式: 首先使用' - ',但如果在引号中使用' - ',则可以忽略它。如何形成一个Java正则表达式来拆分字符串?
例如:一个测试 - 其中“包含” - “”里面 - 一个引号。 结果应该是这样的一个ARRY:
[0]: a test
[1]: which "contains "-"" inside
[2]: a quotation mark
我不是正则表达式非常好,将是充满感激,如果有人能帮助我:)提前
退房Regex Planet考出 感谢任何正则表达式的你让
你应该能够
String[] splitAray = yourString.Split("[^\"]-[^\"]")
更新来实现这一目标用前瞻/后面,这样前后字符 - 不消耗使用回顾后和超前
String[] splitAray = yourString.Split("(?!\")-(?!\")")
解决方案:
String input = "a test - which \"contains \"-\" inside - a quotation mark";
String[] chunks = input.split("(?<!\")-(?!\")");
System.out.println(Arrays.toString(chunks));
OUTPUT:
[a test , which "contains "-" inside , a quotation mark]
编辑:改变第一部分正则表达式((?!\")
)至(?<!\")
我会让这些看起来像ind和lookahead,只是这样匹配的东西恰好是短划线,而不是包括发生在任何一方的事件。 – cHao
-1这将消耗任何一方的字符,如果破折号,这使得这个答案本质上是“错误的” – Bohemian
是的,这将吃掉报价。 (输出将是[一个测试,其中“包含 - 里面,一个引号”) –