当前位置:编程学习 > C#/ASP.NET >>

求一正则表达式

原字符串:……页数:249……
要取得的“页数:”之后直到不是数字为至,即取得249 --------------------编程问答-------------------- 这个根本不用正则replace就搞定了 --------------------编程问答--------------------

string str=":……页数:249……";
System.Text.RegularExpressions.Regex  reg=new  System.Text.RegularExpressions.Regex(@"(?<Page>\d)",System.Text.RegularExpressions.RegexOptions.IgnoreCase);  
System.Text.RegularExpressions.MatchCollection m = reg.Matches(str); //设定要查找的字符串
for (int i = 0; i < m.Count; i++)
{
Response.Write(m[i].Groups["Page"].ToString());
}

--------------------编程问答--------------------
using System;
using System.Text.RegularExpressions;

namespace Example_LocalNumericFormat
{
    class Program
    {
        static void Main(string[] args)
        {
            string s = "a页数:249b页数5页数:250b";
            // \d 表示一个数字,+ 表示 1 个或多个连续的 \d
            // (?<= ) 左侧以指定字符开头才匹配.
            Match m = Regex.Match(s, "(?<=页数:)\\d+");
            Console.WriteLine("{0},{1},{2}.",m,m.NextMatch(),m.NextMatch());
            Console.Read();
        }
    }
}
--------------------编程问答-------------------- 2楼不对吧,页数之前出现的数字,和249之后出现的数字都将混在一起。而且每次只返回一个数字,没法分清谁和谁是连贯的。 --------------------编程问答-------------------- Q_282898034 的方法不错。 --------------------编程问答-------------------- 漏了点东西
Console.WriteLine("{0},{1},{2}.",m,m = m.NextMatch(),m.NextMatch());
--------------------编程问答-------------------- --------------------编程问答--------------------

        string s = "您现在的页数:832,共有9287页";
        string ptn = @"(?<=页数:)\d+";//注意这里环视 "页数:" 里的冒号分全角与半角,根本需要修改
        Match match = Regex.Match(s, ptn, RegexOptions.IgnoreCase);
        if (match.Success)
            TextBox1.Text = match.Value;
        else
            TextBox1.Text = "faild";
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,