猿问

正则表达式 查找以某些字符开始,某些字符结束的匹配项

一个字符串里大致内容如下:
!$(P05Y200003630653)
Pol_type~LIFE~~
Resv_desc~列金额加上因红利分配而产生的相关利益。
Resv_desc~上表所列的现金价值不包括因红利分配而产生
Resv_desc~如有未列年度及事项,详见合同条款。
%%EOJ
!$(P05Y200003630653)
Pol_type~LIFE~~
Resv_de
Resv_desc~
Resv_desc~的相关利益。
Resv_desc~如有未列
%%EOJ

想要计算以上串中,以“!$”开始,以“%%EOJ”结束,的数据对的个数。
c#中相应的正则表达式怎么写?自己没想到好的实现方法。
!$(中间部分)%%EOJ

这中间部分有以下要求:
1. 至少包含一个字符,那就涉及到[]+了
2. 使用懒惰匹配模式,找最近的%%EOJ配对。或者写一个表达式保证这个串中不包含%%EOJ的字串。
正则表达式快来帮忙?


哔哔one
浏览 2460回答 2
2回答

qq_笑_17

!\$(.+?)%%EOJ即可,注意要启用正则的单行模式在C#中统计并返回数据对个数的代码是:var input = @"!$(P05Y200003630653)Pol_type~LIFE~~Resv_desc~列金额加上因红利分配而产生的相关利益。Resv_desc~上表所列的现金价值不包括因红利分配而产生Resv_desc~如有未列年度及事项,详见合同条款。%%EOJ!$(P05Y200003630653)Pol_type~LIFE~~Resv_deResv_desc~Resv_desc~的相关利益。Resv_desc~如有未列%%EOJ";            var r = new System.Text.RegularExpressions.Regex(@"!\$(.+?)%%EOJ", System.Text.RegularExpressions.RegexOptions.Singleline);            return r.Matches(input).Count; 
随时随地看视频慕课网APP
我要回答