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

求一个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;
--------------------编程问答-------------------- 标记 学习 --------------------编程问答--------------------
引用 4 楼 sq_zhuyi 的回复:
取左右两边的人名?还需正则?? 

string raw = "【獨步】豹子头,〓★★★〓悟空,こ流星こ,★神★波波,067完颜阿骨打,YO~YO,&白衣岚岚&"; 
string str1 = raw.Split(',')[0]; 
string str2 = raw.Split(',')[raw.Split(',').length-1];


嘿嘿.如果名字里允许有","呢?貌似他的名字规则里没过滤特殊字符啊. --------------------编程问答-------------------- 怎么看起来像是网游里的组队pk呢 --------------------编程问答-------------------- --------------------编程问答--------------------
引用 1 楼 wuyazhe 的回复:
源字串什么样子?? 
【獨步】豹子头(1)(2)こ流星こ,★神★波波 

这样么? 
如果全字匹配: 

C# code
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)(2) (闭关修练)无尘
可用吗? --------------------编程问答-------------------- 学习 --------------------编程问答-------------------- --------------------编程问答--------------------
引用 10 楼 happy0099 的回复:
引用 1 楼 wuyazhe 的回复:
源字串什么样子?? 
【獨步】豹子头(1)(2)こ流星こ,★神★波波 

这样么? 
如果全字匹配: 

C# code 
string yourStr = "【獨步】豹子头(1)(2)こ流星こ,★神★波波"; 
            Match mc = Regex.Match(yourStr, @"^(? <play1>[^()]+)\((? <play1No>\d+)\)\((? <play2No>\d+)\)(? <play2>[^()]+)$"); 
            if (mc.Success) 
            { 
                MessageBox.S…


你举例子用的是全角括号,现在又用半角,到底是怎样的
中间括号中一定是数字吗?
--------------------编程问答-------------------- 这个不用正则表达式简单呀,直接根据( )两个符号取不就行了吗?
 
楼主做可乐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#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,