正则表达式 - 开始和结束模式
本文关键字:结束 模式 开始 正则表达式 | 更新日期: 2023-09-27 18:30:56
>我在文件中有如下字符串,并希望根据开始和结束模式找到字符串的每个出现。
STX=ANAA:1+5013546100993+5033075994542LI0927030002+5033075994542'MTR=3'END=4'STX=ANAA:1+5013546100993+5033075994542:1:D:068::288:10941/101'OTR=8'MTR=53'END=7'UNA:+.?'DNB=1'MTR=3'END=5''STX=ANAA:1+5013546100893+5033075994542:1:D:068::288:10941/101''OTR=8''MTR=53''END=9
我想找到与模式匹配的字符串,该模式以 STX 或 UNA 开头,并在 STX 或 UNA 的下一段开始之前结束。
在上面的字符串中,我想拉如下
1) STX=ANAA:1+5013546100993+5033075994542LI0927030002+5033075994542'MTR=3'END=4'
2) 联合国协会:+.?'DNB=1'MTR=3'END=5''
3) STX=ANAA:1+5013546100893+5033075994542:1:D:068::288:10941/101''OTR=8''MTR=53''END=9
我把我的正则表达式写得如下
string pattern = "(STX|UNA.*)STX|UNA"
但它总是返回第一个匹配项。
问候艾伦
您的正则表达式捕获下一场比赛的开始。您应该将其排除在外:
(STX|UNA).*?(?=(STX|UNA|$))
你需要让你的正则表达式进行非贪婪的匹配。顺便说一句,你的正则表达式必须是,
(STX|UNA).*?(STX|UNA)
正则表达式中的(STX|UNA.*)
将匹配STX
或UNA
加上零个或多个字符。
c# 中的正则表达式
string strRegex = @"((STX)[^""""""""]*END=[0-9])('STX)|((UNA:+.?)[^""""""""]*END=[0-9]'')|((STX)[^""""""""]*END=[0-9])";
它有七场比赛1,4,6是你预期的比赛,试试吧