本文將建立一個winform項目中匹配找出文本中所有數字的簡單實例,以下是詳細步驟:
新建一個winform項目,為了便於演示,簡單的布局如下:
代碼如下(需要using System.Text.RegularExpressions;):
private void button1_Click(object sender, EventArgs e) { this.listBox1.Items.Clear(); //匹配的正則表達式 Regex r = new Regex(@"([1-9]\d*\.?\d*)|(0\.\d*[1-9])"); //開始匹配 Match m = r.Match(this.textBox1.Text); while (m.Success) { //匹配成功 this.listBox1.Items.Add(m.Groups[0].Value); //從上一個匹配結束的位置開始下一個匹配 m = m.NextMatch(); } }
用於匹配的正則表達式為:([1-9]\d*\.?\d*)|(0\.\d*[1-9])
(
[1-9] :匹配1~9的數字;
\d :匹配數字,包括0~9;
* :緊跟在 \d 之后,表明可以匹配零個及多個數字;
\. :匹配小數點;
? :緊跟在 \. 之后,表明可以匹配零個或一個小數點;
0 :匹配一個數字0;
)
其中的 [1-9]\d*\.?\d* 用以匹配諸如:1、23、34.0、56.78 之類的非負的整數和浮點數;
其中的 0\.\d*[1-9] 用以匹配諸如:0.1、0.23、0.405 之類的非負浮點數;
F5運行程序,文本框輸入欲匹配的文本內容,點擊按鈕結果如下:
根據業務的需要,我們可以運用正則表達式達成目標,比起繁瑣的字符串處理,正則表達式的高效和靈活是無與倫比的,
本例重在說明.net中,運用正則regex的方法,包括:
Regex:正則表達式的實例;
Match: 一次正則表達式的匹配結果;
-m.Success:指示匹配是否成功;
-m.NextMatch:從上一個匹配結束的位置開始下一個匹配;
正則表達式的語法在這里就不再贅述了。