我在使用正如我期望的方式运行正则表达式时遇到了一些麻烦。根据我在regexhero中的测试,它似乎与我试图匹配/捕获换行符的方式有关。我试图匹配并替换X12文件中的文本;这是一个样本:
CLP*600256417*1*50.00*28.52**WC*30567856570-0001~
NM1*QC*1*JOHN*DOE*D***MI*79999990P~
CLP*609723417*1*50.00*28.52**WC*33345470247-0001~
CAS*CO*45*21.48~
NM1*QC*1*JOHN*DOE*D***MI*738787490P~
我需要做的是匹配以" CLP *"开头的所有行。没有后跟一行以" CAS *"开头的行。在这个过程中,我需要在匹配的" CLP"中捕获两个金额。行,并希望捕获下一行之前存在的换行符/回车符的任何组合。
这是我期待的正则表达式可以实现这一点:
CLP(\*[^\*]*){2}\*(?<ClaimAmount>\d*\.\d{2})\*(?<ClaimPaymentAmount>\d*\.\d{2}).*?~(?<newlineFormat>[\n|\r|\f]*)?(?!CAS\*)
我看到的结果是&#34; CLP&#34;线条正在匹配 - 我期待第二个被正则表达式末尾的负向前瞻排除。如果我从我的&#34; newlineFormat&#34;中移除*
捕获组以及跟随它的?
,它按预期工作 - 只有第一个&#34; CLP&#34;线匹配。我不认为这对我有用,因为它需要某种形式的换行符,但我使用的文件格式不一定要有任何换行符。< / p>
答案 0 :(得分:2)