簡體   English   中英

正則表達式問題c#數字現在是下划線

[英]regex issue c# numbers are underscores now

我的正則表達式刪除了我的字符串中的所有數字(0-9)。 我不明白為什么所有數字都被_替換

編輯:我知道我的“_”正則表達式模式將字符更改為下划線。 但不是為什么數字!

誰能幫我嗎? 我只需要像所有特殊字符一樣刪除。

在這里看到正則表達式:

 string symbolPattern = "[!@#$%^&*()-=+`~{}'|]";
Regex.Replace("input here 12341234" , symbolPattern, "_");

Output: "input here ________"

問題是你的模式在中間使用了一個破折號,它起到了from )=的ascii字符的范圍。 這是一個細分:

  • ) :41
  • 1 :49
  • = :61

如你所見,數字從49開始,介於41-61之間,因此它們匹配並被替換。

您需要將-放置在字符類的開頭或結尾,以便字面匹配而不是作為范圍:

"[-!@#$%^&*()=+`~{}'|]"

你必須逃避-因為sequence [)-=]包含數字

string symbolPattern = "[!@#$%^&*()\-=+`~{}'|]";

移動-到列表的末尾,以便它被視為文字:

"[!@#$%^&*()=+`~{}'|-]"

或者,到前面

"[-!@#$%^&*()=+`~{}'|]"

就目前而言,它將匹配范圍內的所有字符)-= ,其中包括所有數字。

你需要在你的正則表達式中逃避你的特殊角色。 例如,*是通配符匹配。 看看這些特殊字符對你的比賽意味着什么。

我沒有使用C#,但通常“*”字符也是需要轉義的控制字符。

以下匹配任何字符的整行,盡管“^”和“$”是多余的:

^.*$

這匹配字符串中出現的任意數量的“A”字符:

A*

來自oreilly的“貓頭鷹”一書是您真正需要研究的內容:

http://shop.oreilly.com/product/9780596528126.do?green=B5B9A1A7-B828-5E41-9D38-70AF661901B8&intcmp=af-mybuy-9780596528126.IP

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM