String 用于匹配两个固定词之间特定段落的第一个匹配项的正则表达式

String 用于匹配两个固定词之间特定段落的第一个匹配项的正则表达式,string,matching,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:0

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

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

我假设您希望在行首匹配“通话费”,因此您可以使用
^Call Charges
作为开始,使用
^Total
作为结束。

诀窍是使用
^
匹配行的开头。类似地,您可以使用
$
匹配行尾。

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

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

不,它不匹配,因为有这么多行,它匹配最后一个“总数”,你说它不匹配是什么意思?您搜索了
^通话费
,但没有找到任何内容?您使用的是哪种语言/程序?您是否尝试过不适合您的正则表达式?请分享。如果您希望通过或类似方式共享,则更好。或者,您可以添加
\n
以匹配换行符:
^通话费(.*\n)*?(?=^总计)