C# Regex正則匹配所有字元(遇到換行斷行符號\r\n問題)

來源:互聯網
上載者:User

標籤:使用   strong   os   io   問題   re   

廢話不多說,直接上內容

使用Regex.Match()方法的時候,想匹配一個子串,但是要匹配的內容可能在我載入的資源中出現換行,比如我的資源內容為john \r\n smith,我想把john smith匹配出來。

1. Regex中點號(.)代表除了\n以外的所有字元,但是這僅限於在中括弧外使用([]),如果在中括弧內使用,就僅代表點號本身,所以這個正則可以寫為 "john(.|\n)*?smith"。

2. Regex中\s代表包含製表(\t),換行,空格的所有空白字元,\S代表不包含製表,換行,空格的所有非空白字元,那麼這2個自由組合就可得到所有字元,所以可以這麼寫"john[\s\S]*?smith",

3. C#Regexnamespace中Regex.Match()方法接收第3個參數,這個參數是一個RegexOptions枚舉,經過我的實驗,發現我要匹配換行和斷行符號的內容的時候,把第3個參數指定為RegexOptions.SingleLine,在正則中可以寫"john.*?smith",一樣能匹配成功。所以這也作為1種方法吧,猜測是增強了點號的匹配效果,比如說能匹配\n(當然只是1種猜測,檢測可以在字串中加入單獨的\n,不要\r,也能匹配出結果)

 

註:1中使用小括弧,用或串連, 2中使用中括弧,中括弧內的正則自動選擇。

 

\r 斷行符號 code=13 return (弱智的理解為游標移動到本行的起始位置,即Y座標不變)

\n 換行code=10 newline (弱智的理解為游標移動到下一行的x座標不變的位置)

在windows OS下,我們鍵盤上的enter鍵執行了 \r\n 的操作,但是在Linux下只有 \n 的操作。因此代碼中需要注意下。

 

 

 

 

《完》

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.