① 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,"
你要匹配這樣的空格,只需把此式中的首個,換成空格即可:
(?=[^\"]+?\",|[^\"]+?\"$)
▲這可以處理你舉的例子。
如果情況更復雜,請再舉例,我繼續幫你。