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;
}