Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在“上”拆分Java中的字符串&引用;,但不是在“上”&引用;_Java_Regex - Fatal编程技术网

在“上”拆分Java中的字符串&引用;,但不是在“上”&引用;

在“上”拆分Java中的字符串&引用;,但不是在“上”&引用;,java,regex,Java,Regex,在Java中,我尝试使用String.split()方法在“;”上拆分字符串,但在“\\\\;”上不使用。(2个后斜杠,后跟分号) 例如:“aa;bb;cc\\;dd;ee\\;ff”应拆分为 aa bb cc\\;dd ee\\; ff 如何使用正则表达式实现这一点 马库斯使用 "aa;bb;cc\\;dd;ee\\;;ff".split("(?<!\\\\);"); 这被称为负查找,语法类似于(?。它匹配任何不以a开头的b。您可能需要类似以下内容: (?<!\\\\)

在Java中,我尝试使用
String.split()
方法在
“;”
上拆分字符串,但在
“\\\\;”
上不使用。(2个后斜杠,后跟分号)

例如:
“aa;bb;cc\\;dd;ee\\;ff”
应拆分为

aa

bb

cc\\;dd

ee\\;

ff
如何使用正则表达式实现这一点

马库斯

使用

"aa;bb;cc\\;dd;ee\\;;ff".split("(?<!\\\\);");

这被称为负查找,语法类似于
(?。它匹配任何不以a开头的b。您可能需要类似以下内容:

(?<!\\\\);

(?这里是一个带有.as分隔符的代码示例:

String p = "hello.regex\\.brain\\.twister";
System.out.println( p );
for (String s : p.split( "(?<!\\\\)\\.", -1 )) {
  System.out.println( "-> "+ s );
}

(关于
\\\\;
?)拆分关于\\\\;只在“\\\;”上拆分(两个后斜杠,后跟分号)。我不想在这里拆分。可能最简单的方法是简单地在“;”上拆分,然后在每个以“\\”结尾的部分后面添加一个“;”,可能是重复的:这需要引用“我想。我不知道……我对所有的反斜杠都感到困惑:-)我检查了我的代码,它匹配正确……我还认为它必须是8\,这在正则表达式级别上是4,相当于2个真正的反斜杠。@Ingo:但我们不希望达到2个真正的反斜杠,只有1个。除非OP在他的问题中有一个错误……是的,你可能是对的,正如他引用的示例字符串。Oto他说“2个反斜杠,后跟分号”。
String p = "hello.regex\\.brain\\.twister";
System.out.println( p );
for (String s : p.split( "(?<!\\\\)\\.", -1 )) {
  System.out.println( "-> "+ s );
}
hello.regex\.brain\.twister
-> hello
-> regex\.brain.\twister