我正在尋找無處不在,但找不到答案。我需要一個正則表達式來刪除字符串中的所有空格,但只保留""
中的空格。 例如:$F:2 $PX:30 $PY:980 $T: " "
或$F:A $PX:30B $PY:9K80 $T: " "
所以到底應該看起來像$F:2$PX:30$PY:980$T:" "
正則表達式去除whitepsace,除非它在裏面「」
這將是寶貴的解釋如何閱讀你回答的正則表達式。
我正在尋找無處不在,但找不到答案。我需要一個正則表達式來刪除字符串中的所有空格,但只保留""
中的空格。 例如:$F:2 $PX:30 $PY:980 $T: " "
或$F:A $PX:30B $PY:9K80 $T: " "
所以到底應該看起來像$F:2$PX:30$PY:980$T:" "
正則表達式去除whitepsace,除非它在裏面「」
這將是寶貴的解釋如何閱讀你回答的正則表達式。
可否請你稍作更新。 '$ F:2 $ PX:30 $ PY:980 $ T:「」$ F:2 $ PX:30 $ PY:980 $ T:「」'在這種情況下,正則表達式在關閉後沒有捕獲空間「你是否也能做到這一點?這不是一個錯誤,這樣的字符串是這樣的,就像2 in 1 –
好的,問題是這樣的:我在第一個註釋中寫了第一個'$ T :「」它忽略了其餘部分,它只給出了字符串的一半,所以你可以找到一個解決方法來獲得這個@maksymiuk –
我不明白..在這個例子中,它顯示它正在工作你想要的:https://regex101.com/r/4ggez2/1 – maksymiuk
匹配不preceeded也不後面引號的空間:
(?<!") (?!")
匹配所有空白:
(?<!")\s+(?!")
注:這可能無法在工作時間超過一個空間,由梅德指出。
這會在引號中的3個連續空格上失敗,例如, ''「'。 –
你可以修改它一下,只是忽略前面加引號的空格,並刪除後面加引號的空格,我需要找到這個'$ T:「」'而不只是'$ T:「 「'。希望你明白我想說什麼 –
@arianitax,我的答案解決了這個問題,也允許多個空格 – maksymiuk
The Greatest Regex Trick Ever是在這種情況下非常有用:
var str = "$F:2 $PX:30 $PY:980 \" \"$T:\" \"";
str = Regex.Replace(str, "\"\\s+\"|\\s+", m => { return m.Value.StartsWith("\"") ? m.Value : ""; });
Console.WriteLine(str);
老實說,這不是一個很難解決的問題,只需迭代字符並跟蹤打開和關閉雙引號而不是使用正則表達式即可。 – juharr
您提供了很少的示例。能否出現除空格之外的任何引號,例如'「a b c」'... [見本演示](https://regex101.com/r/XtILna/1)。爲了更好的理解,還請顯示您已經嘗試過的內容。 –