-1

我正在寻找一个 Java 正则表达式,以便我可以打破以下表达式:首先使用“-”,但如果在引号中使用“-”,则应忽略它。

例如:一个测试 - 其中“包含” - “” - 一个引号。结果应该是这样的数组:

[0]: a test 
[1]: which "contains "-""  inside
[2]: a quotation mark

我不太擅长正则表达式,如果有人能帮助我,我将不胜感激:) 提前谢谢

4

2 回答 2

2

查看Regex Planet以测试您制作的任何正则表达式

你应该能够实现这一点

String[] splitAray = yourString.Split("[^\"]-[^\"]")

使用向前/向后进行更新,以便不消耗 - 之前和之后的字符

String[] splitAray = yourString.Split("(?!\")-(?!\")")
于 2013-06-24T22:07:19.283 回答
2

使用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]

(?!\")编辑:将正则表达式( )的第一部分更改为(?<!\")

于 2013-06-24T22:10:04.213 回答