C#如何使用正则表达式获取一个字符串如“X(Y年Z月)”中的X、Y、Z三个不定长度的字符串?

 我来答
1006038080
2014-04-17 · TA获得超过102个赞
知道小有建树答主
回答量:328
采纳率:0%
帮助的人:175万
展开全部
using System;
using System.Text.RegularExpressions;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            //定义能匹配单词 do 的表达式
            Regex rx = new Regex(@"\s+do\s+", RegexOptions.Compiled | RegexOptions.IgnoreCase);

            string[] source = { "How do you do !", "no one !" };

            foreach (string s in source)
            {
                Match match = rx.Match(s);

                Console.WriteLine("匹配到的子串为:|{0}|\n在原串的第 {1} 个位置\n子串长度:{2}",
                    match.Value, match.Index, match.Length);
                Console.WriteLine("------------------------------");
            }
        }
    }
}
//匹配到的子串为:| do |
//在原串的第 3 个位置
//子串长度:4
//------------------------------
//匹配到的子串为:||
//在原串的第 0 个位置
//子串长度:0
//------------------------------

这个是C# 正则的具体用法    但是你说的匹配规则不明确所以需要你自己写。至于三个的话如果不能一次匹配出来可以一个一个匹配出来进行拼接。

写完能帮到你!

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
CodeBlove
2014-04-17 · TA获得超过3364个赞
知道小有建树答主
回答量:936
采纳率:79%
帮助的人:242万
展开全部

你没说明X,Y,Z是什么类型的字符,但是我猜测是数字

bool Parse(string stringvalue,ref string X,ref string Y,ref string Z)
{
    string x="^d+(";
    string y="^d+(d+年";
    string z="^d+(d+年d+月";
    int i,j,k;
    Match m;
    m= Regex.Match(stringvalue,x);
    i=m.Length;
    if (i<=0)return false; 
    X=m.Value.Substring(0,i-1);
 
    m= Regex.Match(stringvalue,y);
    j=m.Length;
    if (j<=0)return false;
    Y=m.Value.Substring(i,j-i-1);

     m= Regex.Match(stringvalue,z);
    k=m.Length;
    if (k<=0)return false;
    Z=m.Value.Substring(j,k-j-1); 

    return true;   
 
 }
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式