正则应用一例
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;
namespace Win.Regx
{
public partial class FrmImage : Form
{
public FrmImage()
{
InitializeComponent();
}
private void btn_Click(object sender, EventArgs e)
{
string str = @"<IMG src='UploadFile/Mail/20083121g72134e194001.jpg' border=0>
<IMG src=""UploadFile/Mail/200812g1721341903301.png"" border=0>
<IMG src=""UploadFile/Mail/2008121g7213t419001.gif"" border=0>
<IMG src=""http://www.abc.com/121g7213t419001.jpg"" border=0>
<IMG src=""http://www.csdn.com/121g7213t419001.jpg"" border=0>";
Method1(str);
Method2(str);
Method3();
}
/// <summary>
/// 方法一
/// 查找指定字符串中的图片名称
/// </summary>
private void Method1(string str)
{
// Regex ss = new Regex(@"(?<=UploadFile/Mail/).*?(?=\s*?['""])");
Regex ss = new Regex(@"(?<=/)[a-zA-Z0-9]*\.(jpg|gif|png)(?=\s*?['""])");
// (?<=UploadFile/Mail/),表示反向预搜索,在这一位置之前为UploadFile/Mail/
// (?=\s*?['""]),表示正向预搜索,在这一位置之后为\s*?['""]
MatchCollection mc = ss.Matches(str);
for (int i = 0; i < mc.Count; i++)
{
txt.AppendText(mc[i].Value + "\r\n");
}
txt.AppendText("\r\n");
}
/// <summary>
/// 方法二
/// 查找指定字符串中的图片名称
/// </summary>
private void Method2(string str)
{
//string pattern = @"(?i)<IMG src=(['""])UploadFile/Mail/(?<img>[^'""]+)(['""])[^>]*>";
//string pattern = @"(?i)<IMG src=(['""])UploadFile/Mail/(?<img>[^'""]+)\1[^>]*>"; // \1表示前面的(['""])匹配,这样更准确
string pattern = @"<IMG src=(['""])UploadFile/Mail/(?<img>[^'""]+)\1[^>]*>"; // \1表示前面的(['""])匹配,这样更准确
Regex reg = new Regex(pattern);
foreach (Match m in reg.Matches(str))
{
txt.AppendText(m.Groups["img"].Value + "\r\n");
}
txt.AppendText("\r\n");
}
private void Method3()
{
// (?=xxx),正向预搜索,判断当前位置右侧是否能匹配指定表达式
// 输出1 2
string reg = @"(\d+)(?=[^1-9])";
string test = "1t2t5";
MatchCollection mc = Regex.Matches(test, reg);
for (int i = 0; i < mc.Count; i++)
{
txt.AppendText(mc[i].Value + "\r\n");
}
txt.AppendText("\r\n");
// (?!xxx),正向预搜索否定,判断当前位置右侧是否不能够匹配指定表达式
// 输出5
reg = @"(\d+)(?![^1-9])";
test = "1t2t5";
mc = Regex.Matches(test, reg);
for (int i = 0; i < mc.Count; i++)
{
txt.AppendText(mc[i].Value + "\r\n");
}
txt.AppendText("\r\n");
// (?<=xxx),反向预搜索,判断当前位置左侧是否能够匹配指定表达式
// 输出2 5
reg = @"(?<=[^1-9])(\d+)";
test = "1t2t5";
mc = Regex.Matches(test, reg);
for (int i = 0; i < mc.Count; i++)
{
txt.AppendText(mc[i].Value + "\r\n");
}
txt.AppendText("\r\n");
// (?<!xxx),反向预搜索否定,判断当前位置左侧是否不能够匹配指定表达式
// 输出1
reg = @"(?<![^1-9])(\d+)";
test = "1t2t5";
mc = Regex.Matches(test, reg);
for (int i = 0; i < mc.Count; i++)
{
txt.AppendText(mc[i].Value + "\r\n");
}
}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;
namespace Win.Regx
{
public partial class FrmImage : Form
{
public FrmImage()
{
InitializeComponent();
}
private void btn_Click(object sender, EventArgs e)
{
string str = @"<IMG src='UploadFile/Mail/20083121g72134e194001.jpg' border=0>
<IMG src=""UploadFile/Mail/200812g1721341903301.png"" border=0>
<IMG src=""UploadFile/Mail/2008121g7213t419001.gif"" border=0>
<IMG src=""http://www.abc.com/121g7213t419001.jpg"" border=0>
<IMG src=""http://www.csdn.com/121g7213t419001.jpg"" border=0>";
Method1(str);
Method2(str);
Method3();
}
/// <summary>
/// 方法一
/// 查找指定字符串中的图片名称
/// </summary>
private void Method1(string str)
{
// Regex ss = new Regex(@"(?<=UploadFile/Mail/).*?(?=\s*?['""])");
Regex ss = new Regex(@"(?<=/)[a-zA-Z0-9]*\.(jpg|gif|png)(?=\s*?['""])");
// (?<=UploadFile/Mail/),表示反向预搜索,在这一位置之前为UploadFile/Mail/
// (?=\s*?['""]),表示正向预搜索,在这一位置之后为\s*?['""]
MatchCollection mc = ss.Matches(str);
for (int i = 0; i < mc.Count; i++)
{
txt.AppendText(mc[i].Value + "\r\n");
}
txt.AppendText("\r\n");
}
/// <summary>
/// 方法二
/// 查找指定字符串中的图片名称
/// </summary>
private void Method2(string str)
{
//string pattern = @"(?i)<IMG src=(['""])UploadFile/Mail/(?<img>[^'""]+)(['""])[^>]*>";
//string pattern = @"(?i)<IMG src=(['""])UploadFile/Mail/(?<img>[^'""]+)\1[^>]*>"; // \1表示前面的(['""])匹配,这样更准确
string pattern = @"<IMG src=(['""])UploadFile/Mail/(?<img>[^'""]+)\1[^>]*>"; // \1表示前面的(['""])匹配,这样更准确
Regex reg = new Regex(pattern);
foreach (Match m in reg.Matches(str))
{
txt.AppendText(m.Groups["img"].Value + "\r\n");
}
txt.AppendText("\r\n");
}
private void Method3()
{
// (?=xxx),正向预搜索,判断当前位置右侧是否能匹配指定表达式
// 输出1 2
string reg = @"(\d+)(?=[^1-9])";
string test = "1t2t5";
MatchCollection mc = Regex.Matches(test, reg);
for (int i = 0; i < mc.Count; i++)
{
txt.AppendText(mc[i].Value + "\r\n");
}
txt.AppendText("\r\n");
// (?!xxx),正向预搜索否定,判断当前位置右侧是否不能够匹配指定表达式
// 输出5
reg = @"(\d+)(?![^1-9])";
test = "1t2t5";
mc = Regex.Matches(test, reg);
for (int i = 0; i < mc.Count; i++)
{
txt.AppendText(mc[i].Value + "\r\n");
}
txt.AppendText("\r\n");
// (?<=xxx),反向预搜索,判断当前位置左侧是否能够匹配指定表达式
// 输出2 5
reg = @"(?<=[^1-9])(\d+)";
test = "1t2t5";
mc = Regex.Matches(test, reg);
for (int i = 0; i < mc.Count; i++)
{
txt.AppendText(mc[i].Value + "\r\n");
}
txt.AppendText("\r\n");
// (?<!xxx),反向预搜索否定,判断当前位置左侧是否不能够匹配指定表达式
// 输出1
reg = @"(?<![^1-9])(\d+)";
test = "1t2t5";
mc = Regex.Matches(test, reg);
for (int i = 0; i < mc.Count; i++)
{
txt.AppendText(mc[i].Value + "\r\n");
}
}
}
}