[英]C# Regex match on special characters
我知道這些東西已經被討論了很多,但我在嘗試匹配以下內容時遇到了問題...
示例輸入:“test test 310-315”
我需要一個正則表達式來識別一個數字后跟一個破折號,然后返回310.但是我如何在正則表達式中包含破折號。 所以最終的匹配結果是:“310”。
非常感謝 - kcross
編輯:另外,我怎么做同樣的事情,但前面的破折號, 但也考慮到破折號后面的數字可能是負數...當我立即寫問題時沒想到這個。 例如:“test test 310--315”返回-315,“test 310-315”返回315。
Regex regex = new Regex(@"\d+(?=\-)");
\\d+
- 查找一個或多個數字
(?=\\-)
- 確保它后跟一個短划線
@
只是消除了逃避反斜杠以保持編譯器滿意的需要。
另外,您可能需要這樣:
\d+(?=\-\d+)
這將檢查一個或多個數字,后跟一個破折號,后跟一個或多個數字,但僅匹配第一個數字。
在回答您的意見 ,這里有一個正則表達式以下,將檢查數字的-
而占潛在負( - )號:
Regex regex = new Regex(@"(?<=\-)\-?\d+");
(?<=\\-)
- 負面的后視將檢查並確保有前面的-
\\-?
- 檢查零或一個破折號
\\d+
- 一個或多個數字
(?'number'\\d+)-
將起作用(無需逃避)。 在此示例中,包含單個數字的組是命名組'number'
。 如果您想要使用可選符號匹配兩個組,請嘗試:
@"(?'first'-?\d+)-(?'second'-?\d+)"
看到它在這里工作 。 只是為了描述,沒有什么復雜的,只是使用-?
匹配可選項-
和\\d+
匹配一個或多個數字。 文字-
匹配自己。
這是我使用的一些文檔:
http://www.mikesdotnetting.com/Article/46/CSharp-Regular-Expressions-Cheat-Sheet
在該頁面的評論部分,它建議使用'\\-'
轉義短划線
確保逃脫你的逃脫角色\\
你會逃跑的特殊意義-
用正則表達式中的語言(指范圍) backslash (\\)
由於反斜杠在C#文字中具有特殊含義以轉義引號或成為某些字符的一部分,因此需要使用另一個backslash(\\)
來轉義它。 所以基本上它將是\\d+\\\\-
。
\\b\\d*(?=\\-)
你想要展望破折號
\\ b =從一個單詞邊界開始\\ d =匹配任何十進制數字* =根據需要匹配前一次多次(?= \\ - )=向前看破折號
編輯格式化問題,發布后未顯示斜杠
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.