正则表达式由特殊字符分割,例外JAVA

时间:2017-06-30 22:08:28

标签: java regex

我对正则表达式很新,我对这个有困难:

我想在找到这个patern时拆分一个String,但是这个"文本在这里"这一个"文本在这里" ^^(这应该被视为输出中的一个)。 请注意以下符号:^^ 这三种情况可以重复多次,也可以一个接一个地重复,并且总是用空格分隔。 示例:

  

< \ herewouldbeurl> "嘿,那里" " Asioc-project.org /.&# 34; ^^< \ anotherurl />

会产生: 1.< \ herewouldbeurl> 2。"嘿嘿那里" 3" Asioc-project.org /.&# 34 ^^< \ anotherurl />

我发现了这个:" \ s +(?=(?:(?< = [a-zA-Z])\"(?= [A-Za-z])| \ " [^ \"] \" | [^ \"]) $)"但不适用于第三种情况。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

不要使用split()。使用find()循环。

String input = "<\\herewouldbeurl> \"HEY THERE\" \"Asioc-project.org/.\"^^<\\anotherurl/>";

Pattern p = Pattern.compile("\".*?\"(?:\\^\\^)?");
Matcher m = p.matcher(input);
int start = 0;
while (m.find()) {
    String s = input.substring(start, m.start()).trim();
    if (! s.isEmpty())
        System.out.println(s);
    System.out.println(m.group());
    start = m.end();
}
String s = input.substring(start).trim();
if (! s.isEmpty())
    System.out.println(s);

输出

<\herewouldbeurl>
"HEY THERE"
"Asioc-project.org/."^^
<\anotherurl/>