求一个C#正则表达式
求一个C#正则表达式字符串的格式大概是:
选手1(4)(2)选手2
其中肯定会包括 (n)(n),
左右两边的选手名称格式可能会很乱,比如:【獨步】豹子头,〓★★★〓悟空,こ流星こ,★神★波波,067完颜阿骨打,YO~YO,&白衣岚岚&
我想得到左边和右边的人名
希望的结果是:
str1=选手1
str2=选手2
这个表达式怎么写 --------------------编程问答-------------------- 源字串什么样子??
【獨步】豹子头(1)(2)こ流星こ,★神★波波
这样么?
如果全字匹配:
--------------------编程问答-------------------- 关注!! --------------------编程问答-------------------- 如果在一个长字符串中截取。正则改为:
string yourStr = "【獨步】豹子头(1)(2)こ流星こ,★神★波波";
Match mc = Regex.Match(yourStr, @"^(?<play1>[^()]+)\((?<play1No>\d+)\)\((?<play2No>\d+)\)(?<play2>[^()]+)$");
if (mc.Success)
{
MessageBox.Show(mc.Groups["play1"].Value); //选手1的名字
MessageBox.Show(mc.Groups["play1No"].Value); //选手1的编号
MessageBox.Show(mc.Groups["play2"].Value); //选手2的名字
MessageBox.Show(mc.Groups["play2No"].Value); //选手2的编号
}
--------------------编程问答-------------------- 取左右两边的人名?还需正则??
@"(?<play1>[^()]+)\((?<play1No>\d+)\)\((?<play2No>\d+)\)(?<play2>[^()]+)");
string raw = "【獨步】豹子头,〓★★★〓悟空,こ流星こ,★神★波波,067完颜阿骨打,YO~YO,&白衣岚岚&";
string str1 = raw.Split(',')[0];
string str2 = raw.Split(',')[raw.Split(',').length-1]; --------------------编程问答-------------------- 方法1:
MatchCollection mc=Regex.Matches("你的串",@"^[^(]*(?=()|(?<=))[^)]*$");
str1=mc[0].Value;
str2=mc[1].Value;
方法2:
Match m = Regex.Match(textBox1.Text, @"^(?<str1>[^(]*)(.*)(?<str2>.*)$");--------------------编程问答-------------------- 标记 学习 --------------------编程问答--------------------
str1=m.Groups["str1"].Value;
str2=m.Groups["str2"].Value;
嘿嘿.如果名字里允许有","呢?貌似他的名字规则里没过滤特殊字符啊. --------------------编程问答-------------------- 怎么看起来像是网游里的组队pk呢 --------------------编程问答-------------------- --------------------编程问答--------------------
如果人名是:(闭关修练)无尘
字符串是:【獨步】豹子头 (1)(2) (闭关修练)无尘
可用吗? --------------------编程问答-------------------- 学习 --------------------编程问答-------------------- --------------------编程问答--------------------
你举例子用的是全角括号,现在又用半角,到底是怎样的
中间括号中一定是数字吗?
--------------------编程问答-------------------- 这个不用正则表达式简单呀,直接根据( )两个符号取不就行了吗?
楼主做可乐8的程序??? 呵呵 --------------------编程问答-------------------- 晕倒,是我没有说明白,难为各位了
其实是这样的
得到的字符串是一个比赛成绩,如下:
【獨步】涂鸦 (4)(2)〓★★★〓悟空
★神★波波 (4)(1)こ流星こ
067完颜阿骨打 (4)(1)YO~YO
&白衣岚岚& (4)(1)(闭关中..)无尘
快乐鱼 (2) (4) 无影(男)
需要把人名和比分存到数据库中,比如
【獨步】涂鸦 (4)(2)〓★★★〓悟空
得到的结果应该是:
person1=【獨步】涂鸦
person2=〓★★★〓悟空
result1=4
result=2
--------------------编程问答-------------------- 括号倒底是全角还是半角的? --------------------编程问答-------------------- 不一定... --------------------编程问答-------------------- 生成比赛对阵表的工具,是全角的,可是有的人是手工排对阵表,所以有时候是半角,有时候全角 --------------------编程问答--------------------
Match m = Regex.Match("快乐鱼 (2) (4) 无影(男) ", @"^(?<player1>.*)([((]\d*[))]\s*){2}(?<player2>.*)$");
textBox2.Text = m.Groups["player1"].Value + Environment.NewLine + m.Groups["player2"].Value;
选手1,选手2分别是
m.Groups["player1"].Value
m.Groups["player2"].Value
补充:.NET技术 , C#