簡體   English   中英

C#正則表達式匹配特殊字符

[英]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.

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