嘿伙计们,我正在尝试从文本中选择一个特定的字符串,但我不是正则表达式的主人。 我试过一种方式,它从我想要的字符串开始,但它也匹配我想要的东西。
我的正则表达式:
\nSCR((?s).*)(GI|SI)(.*?)\n
我正在匹配的文字。
Hierbij een test
SCR
S09
/vince@test.be
05FEB
GI BRGDS OPS
middle text string (may not selected)
SCR
S09
05FEB
LHR
NPVT700 PVT701 30MAR30MAR 1000000 005CRJ FAB1900 07301NCE DD
/ RE.GBFLY/
GI BRGDS
选择中间字符串,它只需要SCR直到GI线。
答案 0 :(得分:2)
在第一个量词上使用非贪婪量词:
\nSCR((?s).*?)(GI|SI)(.*?)\n
或者您可以使用negative look-ahead assertion (?!
expr
)
来捕获那些不以GI
或SI
开头的行:
\nSCR((?:\n(?!GI|SI).*)*)\n(?:GI|SI).*\n
答案 1 :(得分:1)
要从以SCR
开头的行与以GI
或SI
(含)开头的行匹配,您可以使用以下正则表达式:
(?m:^SCR\n(?:^(?!GI|SI).*\n)*(?:GI|SI).*)
这将:
SCR
和新行。GI
或SI
开头的行。GI
或SI
(如果没有GI
或SI
,这会阻止它与字符串的结尾匹配