我想寫一個正則表達式,將採取以下形式的字符串模式:替換爲「」
<123>, ;<123>:::,<123>
,其中123是一些數字和數字之間是一些標點符號。
我需要一個正則表達式將替換爲「」數字領域之間的所有標點符號。
我嘗試這樣做:
Regex.Replace(s, ">.*<", "");
但沒有運氣。什麼正則表達式可以完成這個?
編輯:我原來的正則表達式是有點誤導,對不起!正如評論者說,我在尋找< 123> < 123> < 123>
我想寫一個正則表達式,將採取以下形式的字符串模式:替換爲「」
<123>, ;<123>:::,<123>
,其中123是一些數字和數字之間是一些標點符號。
我需要一個正則表達式將替換爲「」數字領域之間的所有標點符號。
我嘗試這樣做:
Regex.Replace(s, ">.*<", "");
但沒有運氣。什麼正則表達式可以完成這個?
編輯:我原來的正則表達式是有點誤導,對不起!正如評論者說,我在尋找< 123> < 123> < 123>
不能確定確切的C#語法下去,但如果你的字符串保證不會有那些尖括號以外的號碼,那麼你就應該能與此逃脫:
Regex.Replace(s, "[^\d<>]*", "");
因此,刪除任何非數字或「<」或「>」的東西。如果您還想刪除尖括號,則更簡單:
Regex.Replace(s, "[^\d]*", "");
你需要讓.*
部分非貪婪,否則會拿起第一>
和最後<
之間的一切在你的字符串中。嘗試是這樣的:
Regex.Replace(s, ">.*?<", "");
這將清除>
和<
字符也。如果您想保留這些:
Regex.Replace(s, ">.*?<", "><");
您應該按照建議使用括號。但我沒有得到你想要取代的東西。
string s = "<123>, ;<123>:::,<123>";
s = (new Regex("[<>:, ;]")).Replace(s, "\"");
最終的字符串將是;
「123」 「」 「」 123 「」 「」 「」 123"
這兩個應該工作:
Regex.Replace(s, @"(\>|^).*?($|\<(?=\d{3}\>))", "$1$2");
或
String.Concat(Regex.Matches(s, @"\<\d{3}\>")
.OfType<Match>().Select(a => a.Groups[0]));
你不需要' @' - 它們被用來忽略轉義字符:'「\\ d」''主場迎戰@「\ d」'這應該做的,但輸出'「<123123123>」',這是奇怪的,雖然它看起來像。 OP要求什麼 – Kobi
@Kobi聽起來像OP預計'「<123><123><123>「' –
@Kobi:感謝您的語法提示! – Mat