用于匹配的正则表达式在两个修正单词之间首次出现特定段落

时间:2017-06-29 06:07:13

标签: string matching

我有一个大文本,我必须从“通话费”中选择文字,直到第一次出现“总计”。 如果我说“通话费”,则不应与“电话会费”相匹配 那个正则表达式应该是什么?

SMS Charges Usage   Free Usage  Charged Usage   Charges
Total   344 33  23
Call Charges    Usage   Free Usage  Charged Usage   Charges
Min:Sec Min:Sec Min:Sec Rs
Local   552:00  150:00  402:00  158.40
Local to CUG    42:00   0:00    42:00   0.00
STD 26:00   0:00    26:00   13.00
ISD 259:00  0:00    259:00  811.40
Total   879:00  150:00  729:00  982.80
Conference Call Charges Usage   Free Usage  Charged Usage   Charges
Min:Sec Min:Sec Min:Sec Rs
Total   345 344 
STD 9:00    0:00    9:00    4.50
ISD 8:00    0:00    8:00    11.20
Total   17:00   0:00    17:00   15.70
Total   344 33  23
SMS Charges Usage   Free Usage  Charged Usage   Charges
SMS SMS SMS Rs
SMS Local   2   2   0   0.00
Total   2   2   0   0.00
National Roaming Charges    Usage   Free Usage  Charged Usage   Charges
Min:Sec/SMS/MB  Min:Sec/SMS/MB  Min:Sec/SMS/MB  Rs
Incoming Calls  17:00   0:00    17:00   0.00
Total   0.00

2 个答案:

答案 0 :(得分:0)

我认为你想要匹配"通话费"在该行的开头,您可以使用^Call Charges作为开头,^Total作为结尾。
诀窍是使用^来匹配行的开头。同样,您可以使用$来匹配行尾。

答案 1 :(得分:0)

您没有指定您使用的语言,但是如果您启用多线模式(因此^$匹配线的开头和结尾)并且点捕获所有模式(所以.也会捕获新行),您可以通过简单的行匹配开头+前瞻组来轻松完成:

^Call Charges.*?(?=^Total)