2012-11-22 52 views

回答

1

我認爲這是可以做的伎倆:(?:^[^|]*(\|))|(?:(\|)[^|]*$)

你會得到的第一個和最後|在比賽組

如果您使用支持可變長度的回顧後,我認爲一個正則表達式引擎這將工作:(?<=^[^|]*)\||\|(?=[^|]*$)

你將只匹配第一個和最後|

+0

此正則表達式應該仍然有效。它不需要兩個管道。 – davidrac

3

試試這個

^([^|]*)\||\|(?=[^|]*$) 

$1" 

取代它看到它here on Regexr

這裏的竅門是第一部分字符串與捕獲組匹配,並把它寫在替換字符串中。對於匹配最後一個「|」的第二個替代方案沒有捕獲組,所以這將填充空字符串,並且不會傷害替換字符串。

1

將字符串視爲由以下部分組成:第一個管道之前的部分,管道,中間部分,管道以及最後一個管道之後的部分。

捕捉你想要的部分:([^|]*)[|](.*)[|](.*)

,然後建立從那些拍攝的部分結果:$1$2$3

相關問題