为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

哔哔one 2018-11-14 10:17:33
一个字符串里大致内容如下:!$(P05Y200003630653)Pol_type~LIFE~~Resv_desc~列金额加上因红利分配而产生的相关利益。Resv_desc~上表所列的现金价值不包括因红利分配而产生Resv_desc~如有未列年度及事项,详见合同条款。%%EOJ!$(P05Y200003630653)Pol_type~LIFE~~Resv_deResv_desc~Resv_desc~的相关利益。Resv_desc~如有未列%%EOJ想要计算以上串中,以“!$”开始,以“%%EOJ”结束,的数据对的个数。c#中相应的正则表达式怎么写?自己没想到好的实现方法。!$(中间部分)%%EOJ这中间部分有以下要求:1. 至少包含一个字符,那就涉及到[]+了2. 使用懒惰匹配模式,找最近的%%EOJ配对。或者写一个表达式保证这个串中不包含%%EOJ的字串。正则表达式快来帮忙?
查看完整描述

2 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

!\$(.+?)%%EOJ即可,注意要启用正则的单行模式

在C#中统计并返回数据对个数的代码是:

var input = @"!$(P05Y200003630653)
Pol_type~LIFE~~
Resv_desc~列金额加上因红利分配而产生的相关利益。
Resv_desc~上表所列的现金价值不包括因红利分配而产生
Resv_desc~如有未列年度及事项,详见合同条款。
%%EOJ
!$(P05Y200003630653)
Pol_type~LIFE~~
Resv_de
Resv_desc~
Resv_desc~的相关利益。
Resv_desc~如有未列
%%EOJ";
            var r = new System.Text.RegularExpressions.Regex(@"!\$(.+?)%%EOJ", System.Text.RegularExpressions.RegexOptions.Singleline);
            return r.Matches(input).Count;

 


查看完整回答
反对 回复 2018-11-18
  • 2 回答
  • 0 关注
  • 2459 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信