求一个正则表达式

zouyong311 2013-01-05 06:32:45
个人觉得不复杂,只不过我实在是不懂。。

<a(1)>abc</a>
<a(2)>bcd</a>
<a(3)>cde</a>
<a(4)>def</a>

需求是取出与指定字符最小匹配单元的括号中的值,譬如指定e,希望得到以下两组匹配

(3)>cde
(4)>de

字符e那头可以用最小匹配搞定,可是(3)这头我就不知怎么办了,每次都匹配到(1)上面,求解


...全文
203 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
-过客- 2013-01-05
  • 打赏
  • 举报
回复
二楼手写,有个模式用错了,不是(?ism),应该是(?isn) n表示除命名捕获组外,其它()不作为捕获组,是为了在不牺牲匹配效率的前提下,提高正则表达式的可读性,一般在命名捕获组和普通捕获组混合出现,而又不关心普通捕获组的正则表达式中使用。
  • 打赏
  • 举报
回复
i不区分大小写 s开启单行模式 m开启多行模式
zouyong311 2013-01-05
  • 打赏
  • 举报
回复
谢谢啦,果然很简单哦,不过对于我来说还是做不到,见到了很多没见过的符号,要是能解释一下就更好了,譬如(?i),(?ism)
-过客- 2013-01-05
  • 打赏
  • 举报
回复
Regex reg = new Regex(@"(?ism)\(\d+\)((?!</?a)[^e])*e");
  • 打赏
  • 举报
回复
string str = @"<a(1)>abc</a> <a(2)>bcd</a> <a(3)>cde</a> <a(4)>def</a>"; var ary = Regex.Matches(str, @"(?i)(?<=<a)[^e\n]+e").OfType<Match>().Select(t => t.Value).ToArray();

110,566

社区成员

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

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

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