這裏的情況:分割在JavaScript中的字符,但不相鄰的一些
var stringExample = "hello=goodbye==hello";
var parts = stringExample.split("=");
輸出:
hello,goodbye,,hello
我需要這樣的輸出:
hello,goodbye==hello
毗連/重複字符必須被忽略,只需要單個"="
分裂。
也許一些正則表達式?
這裏的情況:分割在JavaScript中的字符,但不相鄰的一些
var stringExample = "hello=goodbye==hello";
var parts = stringExample.split("=");
輸出:
hello,goodbye,,hello
我需要這樣的輸出:
hello,goodbye==hello
毗連/重複字符必須被忽略,只需要單個"="
分裂。
也許一些正則表達式?
您可以使用正則表達式:
var parts = stringExample.split(/\b=\b/);
\b
檢查單詞邊界。
最有可能的,@dystroys的答案是你正在尋找的。但是,如果除了字母數字(A-Z
,a-z
,0-9
或_
)之外的任何字符都可能包含「拆分=
」),那麼他的解決方案將不起作用。例如,串
It's=risqué=to=use =Unicode!=See?
將被分成
"It's", "risqué=to", "use Unicode!=See?"
所以,如果你需要避免的是,你通常會使用一個向後斷言:
result = subject.split(/(?<!=)=(?!=)/); // but that doesn't work in JavaScript!
所以,即使這將僅拆分爲單個=
s,您不能使用它,因爲JavaScript不支持(?<!...)
後視斷言。
幸運的是,你可以隨時通過是允許的一切配套變換split()
操作成爲一個全球性match()
操作符之間:
result = subject.match(/(?:={2,}|[^=])*/g);
會給你
"It's", "risqué", "to", "use ", "Unicode!", "See?"
+1我想知道爲什麼在我測試的'split'的lookbehind無法正常工作。 「在Javascript中不起作用!」在什麼地方記錄? –
@dystroy:http://www.regular-expressions.info/refflavors.html是我的這個(或RegexBuddy)的前往資源。 –
'match'通常不等同於處理以分隔符開始/結尾的字符串的方式的「split」。另外,它可以返回null。轉換不是微不足道的:-)至少你需要使用'*'而不是'+' – Bergi
作爲第一個近似的可能的解決方案可能是:
".*[^=]=[^=].*"
請注意,這只是正則表達式,如果你想使用egrep,sed,java正則表達式或其他,請注意是否需要轉義。
請注意!:這是第一個近似值,可以改進。請注意,例如,這個正則表達式不會匹配這個字符串「=」(null - equal - null)。
你能否精確地說明這個正則表達式應該如何用於OP的情況? –
@dystroy'精確'不是一個動詞,但看着你的個人資料,我看你必須說法語。 – jackcogdill
@dystroy我不明白你。什麼OP的意思? 如果您要求一個如何在程序中使用該正則表達式的示例,讓我們來看看它。 文件的內容: 你好=世界 hell0 == w0rld 再見=殘酷==世界 BY3 == cru3l = w0rld = == === – Ole
在你想要分割的'='周圍總會有字母數字字符嗎?或者可以有'hello:=!goodbye'這樣的東西,應該分成'hello:'和'!goodbye'? –