Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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,我需要解析一个字符串;作为分隔符。但是如果文本在双引号内,则不需要解析它 示例我需要解析 this ; "but not ; this" 为此,我提出了正则表达式模式,它工作得很好 ;(?=(?:(?:[^\"]*\"){2})*[^\"]*$) 现在,如果文本包含转义引号,则上述模式不起作用 我需要解析 this ; "but \" not ; this" 你能帮我解释一下在引号中省略转义引号的模式吗?只要双引号不是不平衡的,你就可以将这个正则表达式与负查找一起使用: (?s);(?=(

我需要解析一个字符串;作为分隔符。但是如果文本在双引号内,则不需要解析它

示例我需要解析

this ; "but not ; this"
为此,我提出了正则表达式模式,它工作得很好

;(?=(?:(?:[^\"]*\"){2})*[^\"]*$)
现在,如果文本包含转义引号,则上述模式不起作用

我需要解析

this ; "but \" not ; this"

你能帮我解释一下在引号中省略转义引号的模式吗?

只要双引号不是不平衡的,你就可以将这个正则表达式与
负查找一起使用

(?s);(?=(?:(?:.*?(?<!\\\\)\"){2})*[^\"]*$)
(?s);(?=(?:(?:.*?(?

工作演示:谢谢Anubhava。它工作正常。但是如果文本包含\n,解析逻辑将失败。我以前的正则表达式也可以与\n\t一起工作。在这种情况下,您还需要使用
(?s)
。请参阅编辑。