C#如何使用正则表达式获取一个字符串如“X(Y年Z月)”中的X、Y、Z三个不定长度的字符串?
2个回答
展开全部
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# 正则的具体用法 但是你说的匹配规则不明确所以需要你自己写。至于三个的话如果不能一次匹配出来可以一个一个匹配出来进行拼接。
写完能帮到你!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你没说明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;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询