请教正则表达式

imfzp 2007-12-14 05:16:51
要求是匹配不在括号内的字符
比如source="12ab(34cd)56e(fg78)h"
要匹配的result="abeh"
...全文
120 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yinwun 2007-12-19
  • 打赏
  • 举报
回复
(?<Result>\w*)([\(]\w*[\)])*
string source = txtSource.Text;
MatchCollection mc = null;
Regex re = null;
re = new Regex(@"(?<Result>\w*)([\(]\w*[\)])*", RegexOptions.IgnoreCase);
mc = re.Matches(source);
string r = String.Empty;
foreach (Match m in mc)
{
r += m.Groups["Numbers"].Value;
}
txtResult.Text = r;
直接测试就可以了
wuhq030710914 2007-12-15
  • 打赏
  • 举报
回复
(?<!\([^\)]*?)[a-z]+

LZ 试试这个看行不行
webwalker 2007-12-15
  • 打赏
  • 举报
回复

(?<T1>[^\(\)]*)(?:(?=\()|(?<=\)))(?<T2>[^\(\)]*)
Class中再动态的加入自己的匹配字符
Hesperus 2007-12-14
  • 打赏
  • 举报
回复
好像挺简单的啊
王集鹄 2007-12-14
  • 打赏
  • 举报
回复
分两步,第一去掉括号中的内容,第二匹配特定字符。
string source = "12ab(34cd)56e(fg78)h";
source = Regex.Replace(source, @"(\([^\)]*\))", "");

foreach (Match vMatch in Regex.Matches(source, "[a-z]"))
{
Console.WriteLine(vMatch.Value);
}
imfzp 2007-12-14
  • 打赏
  • 举报
回复
没有的,要求就是匹配不在括号内的特定字符
这个特定字符是用户定义的
例子里面的特定字符就是[a-z]

王集鹄 2007-12-14
  • 打赏
  • 举报
回复
有什么规律吗?
比如都是两组括号四个字母?多列些测试数据和结果。
imfzp 2007-12-14
  • 打赏
  • 举报
回复
感谢,可不可以用regex.Matches来分别获得a,b,e,h
因为实际情况其他的不只是\d这么简单
王集鹄 2007-12-14
  • 打赏
  • 举报
回复
实际上就是去掉括号和数字
string source = "12ab(34cd)56e(fg78)h";
Text = Regex.Replace(source, @"(\([^\)]*\))|\d", "");

110,533

社区成员

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

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

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