求一个C#正则表达式

happy0099 2008-05-29 08:39:18
求一个C#正则表达式

字符串的格式大概是:
选手1(4)(2)选手2

其中肯定会包括 (n)(n),
左右两边的选手名称格式可能会很乱,比如:【獨步】豹子头,〓★★★〓悟空,こ流星こ,★神★波波,067完颜阿骨打,YO~YO,&白衣岚岚&


我想得到左边和右边的人名
希望的结果是:

str1=选手1
str2=选手2


这个表达式怎么写
...全文
206 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
ziseliuxingzh 2008-05-29
  • 打赏
  • 举报
回复
这个不用正则表达式简单呀,直接根据( )两个符号取不就行了吗?

楼主做可乐8的程序??? 呵呵
HimeTale 2008-05-29
  • 打赏
  • 举报
回复
[Quote=引用 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…
[/Quote]

你举例子用的是全角括号,现在又用半角,到底是怎样的
中间括号中一定是数字吗?
heartdevil 2008-05-29
  • 打赏
  • 举报
回复
学习
happy0099 2008-05-29
  • 打赏
  • 举报
回复
[Quote=引用 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); …
[/Quote]


如果人名是:(闭关修练)无尘
字符串是:【獨步】豹子头 (1)(2) (闭关修练)无尘
可用吗?
HimeTale 2008-05-29
  • 打赏
  • 举报
回复
怎么看起来像是网游里的组队pk呢
江城老温 2008-05-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sq_zhuyi 的回复:]
取左右两边的人名?还需正则??

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

嘿嘿.如果名字里允许有","呢?貌似他的名字规则里没过滤特殊字符啊.
priwilliam 2008-05-29
  • 打赏
  • 举报
回复
标记 学习
HimeTale 2008-05-29
  • 打赏
  • 举报
回复
方法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;
路人乙e 2008-05-29
  • 打赏
  • 举报
回复
取左右两边的人名?还需正则??

string raw = "【獨步】豹子头,〓★★★〓悟空,こ流星こ,★神★波波,067完颜阿骨打,YO~YO,&白衣岚岚&";
string str1 = raw.Split(',')[0];
string str2 = raw.Split(',')[raw.Split(',').length-1];
兔子-顾问 2008-05-29
  • 打赏
  • 举报
回复
如果在一个长字符串中截取。正则改为:

@"(?<play1>[^()]+)\((?<play1No>\d+)\)\((?<play2No>\d+)\)(?<play2>[^()]+)");
yagebu1983 2008-05-29
  • 打赏
  • 举报
回复
关注!!
兔子-顾问 2008-05-29
  • 打赏
  • 举报
回复
源字串什么样子??
【獨步】豹子头(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的编号
}
HimeTale 2008-05-29
  • 打赏
  • 举报
回复

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
happy0099 2008-05-29
  • 打赏
  • 举报
回复
生成比赛对阵表的工具,是全角的,可是有的人是手工排对阵表,所以有时候是半角,有时候全角
happy0099 2008-05-29
  • 打赏
  • 举报
回复
不一定...
HimeTale 2008-05-29
  • 打赏
  • 举报
回复
括号倒底是全角还是半角的?
happy0099 2008-05-29
  • 打赏
  • 举报
回复
晕倒,是我没有说明白,难为各位了
其实是这样的

得到的字符串是一个比赛成绩,如下:

【獨步】涂鸦 (4)(2)〓★★★〓悟空
★神★波波 (4)(1)こ流星こ
067完颜阿骨打 (4)(1)YO~YO
&白衣岚岚& (4)(1)(闭关中..)无尘
快乐鱼 (2) (4) 无影(男)


需要把人名和比分存到数据库中,比如

【獨步】涂鸦 (4)(2)〓★★★〓悟空

得到的结果应该是:
person1=【獨步】涂鸦
person2=〓★★★〓悟空
result1=4
result=2


110,570

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧