string test = @"<'sfd<val1>sdf<val2>'><'sdkc'>fd'<val3>'sfd<val4>dfshjh<val5>fds"; Regex reg = new Regex(@"<val\d>"); MatchCollection mc = reg.Matches(test); foreach (Match m in mc)
{
Console.WriteLine( m.Value);
Console.WriteLine("-------------------------"); } /*
上面输出:
<val1>
-------------------------
<val2>
-------------------------
<val3>
-------------------------
<val4>
-------------------------
<val5>
-------------------------
我想加入以下限制,禁止匹配<''>内的<val数字>
输出将为:
<val3>
-------------------------
<val4>
-------------------------
<val5>
-------------------------
*/我想匹配<val数字>的位置,但我想加入以下限制,禁止匹配<''>内的<val数字>,
不知道怎么写,那位前辈能搞定呢?谢谢!
解决方案 »
- 代码实现关闭正在使用中个文件
- 菜鸟寻求帮助~~用C#做遥感影像的更新
- 请高手给我一个很小很小的工厂模式编程的例子,谢谢
- 关于 stack 和 heap, 以及 非托管资源
- 100分问哪里可以找到英文的WebCast之类的视频教学,最好是关于Winfx的。
- c#中的正常除法是怎么的?比如2除以4=0.5,请教
- 获取FTP文件夹路径怎么弄?
- 在VS环境中开发的站点,在上传远程服务器时要做些什么工作?
- 配置IIS时,本地访问80端口能打开,外网访问80端口就打不开
- 用C#添加一个文本框和按钮!在文本框写个网站地址!然后单击按钮跳转到那个网站!
- 多个窗口问题
- GridView中的CheckBox被选中时获取模板列的值
Regex reg = new Regex(@"(?is)(?<!<'((?!'>).)*)<val\d+>(?!((?!<').)*'>)");
MatchCollection mc = reg.Matches(test);
foreach (Match m in mc)
{
Console.WriteLine(m.Value);
Console.WriteLine("-------------------------");
}
你试一试这样:
Regex reg = new Regex("^<val\d>$");
MatchCollection mc = reg.Matches(test);
左右两边都限制是为了严谨一点,如果格式基本就按你例子所给,那么只保留左边的判断倒也够了
Regex reg = new Regex(@"(?is)(?<!<'((?!'>).)*)<val\d+>");