正则表达式——匹配数字
本文将建立一个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:从上一个匹配结束的位置开始下一个匹配;
正则表达式的语法在这里就不再赘述了。