2015-02-05 26 views
0

我正在使用「my-string」.split(「\ n」)將一個字符串拆分爲一行數組,這很好。如何創建正則表達式來拆分線,除非有斜線?

但是現在我需要添加對延續字符「\」的支持。

我想改變我的分裂,使其分裂串入的「\ n」 行除了如果有「\」字符之前的「\ n」

因此,例如「這\ n \ n \ nA \ nTEST「會分成」這「,」是「,」A \ nTEST「

起初,我想我會去並用佔位符替換/ \ n的所有實例,然後在最後更改它們。但是這是太多的處理。該字符串可能很長,並可能消耗很多行。

+2

你說'\'是延續字符,但你在例子中使用'/'。哪一個? – t0mppa 2015-02-05 22:24:07

+0

'「x = 12 \ ny = 2 \\ n3」.split(/ \ n /)'作品不是嗎? – anubhava 2015-02-05 22:32:06

+0

@ t0mppa - 你是對的,我糾正了問題 – 2015-02-06 14:07:35

回答

1

這被稱爲負面看後面。例如,比賽B的未通過的開頭: (?<!a)b

所以,你需要的是 (?<!\\)\n

更新 JavaScript不支持負的外觀後面。不幸的是,沒有一個最好的策略來處理它。這裏有一個不錯的博客列出了所有可能的方法:http://blog.stevenlevithan.com/archives/mimic-lookbehind-javascript

我個人會在「\ n」上分割,即完全避免regexp,然後在數組中加入具有「\」的字符串。對於這種特殊情況,如果延續是例外而不是規則,它將提供最佳性能。

+3

不存在JS – anubhava 2015-02-05 22:24:05

+0

嗯,這是行不通的。嘗試「x = 12 \ ny = 2 \\ n3」.split(「(?<!\\)\ n」),但它只是返回一個包含原始字符串的長度數組 – 2015-02-05 22:26:50