我想在第一次和最後一次出現時用|
替換爲""
。是否可以用正則表達式替換第一次出現和char的最後一次發生?
例子:
"Hello | my name | is | Jason | and I like hacking"
到目前爲止,我只能做一個或另一個。
第一次出現:
^(.*?)[|]
上次發生:
(|)[^|]*$"
是否有可能更換一次都還是你必須做的步驟是什麼?
我想在第一次和最後一次出現時用|
替換爲""
。是否可以用正則表達式替換第一次出現和char的最後一次發生?
例子:
"Hello | my name | is | Jason | and I like hacking"
到目前爲止,我只能做一個或另一個。
第一次出現:
^(.*?)[|]
上次發生:
(|)[^|]*$"
是否有可能更換一次都還是你必須做的步驟是什麼?
我認爲這是可以做的伎倆:(?:^[^|]*(\|))|(?:(\|)[^|]*$)
你會得到的第一個和最後|在比賽組
如果您使用支持可變長度的回顧後,我認爲一個正則表達式引擎這將工作:(?<=^[^|]*)\||\|(?=[^|]*$)
你將只匹配第一個和最後|
試試這個
^([^|]*)\||\|(?=[^|]*$)
與
$1"
取代它看到它here on Regexr
這裏的竅門是第一部分字符串與捕獲組匹配,並把它寫在替換字符串中。對於匹配最後一個「|」的第二個替代方案沒有捕獲組,所以這將填充空字符串,並且不會傷害替換字符串。
將字符串視爲由以下部分組成:第一個管道之前的部分,管道,中間部分,管道以及最後一個管道之後的部分。
捕捉你想要的部分:([^|]*)[|](.*)[|](.*)
,然後建立從那些拍攝的部分結果:$1$2$3
此正則表達式應該仍然有效。它不需要兩個管道。 – davidrac