① java中正则表达式输出普通\为什么需要4个
你好,很高兴为你解答。
这是因为在Java中\本身需要转义。正则表达式中\也需要转义。(注:正则表达式和Java本身没有关系)。所以,当用Java语言描述正则中的转义时,需要再加一个\。
先解释一下:\\. 首先,在正则表达式中是要转义.的,所有表示.需要用\. 而在java中表示\,又需要转义,所以,在Java中写这个正则要多加一个\,即为\\.
再解释一下:\\\\。首先,在正则表达式需要转义\.所以,表示\需要用\\。而在java中每个\都要转义,所以就变成\\\\了。
总结一下,在写java中的正则时,首先不要考虑java,先把正则写出来,再在正则表达式中每个\前面加一个\就是java中的正则表达式了。
② java正则表达式",(=[^\"]+\",|[^\"]+\"$)
我举例说明:
x(?=y)
▲表示:右边紧跟y的x,但只包含x,不包含y
x(?=y|z)
▲表示:右边紧跟y或z的x,但只包含x,不包含y或z
x(?!y)
▲表示:右边不跟y的x,只包含x
你的这个正则表达式完全正确:
,(?=[^\"]+?\",|[^\"]+?\"$)
▲它只匹配1个,
▲▲但条件是:
▲条件1▲:此,右边到第1个",之间有至少1个不是"的字符
▲条件2▲:此,右边到结尾的"之间有至少1个不是"的字符
举例说明:
它匹配下面3行中的前2个,
(每次匹配1个,而不是同时匹配前2个)
x,y,z",
x,y,,",
x,y,z,"
你要匹配这样的空格,只需把此式中的首个,换成空格即可:
(?=[^\"]+?\",|[^\"]+?\"$)
▲这可以处理你举的例子。
如果情况更复杂,请再举例,我继续帮你。