Regex问题:只匹配两个术语之间的第一个匹配项



"从SAYLOR SELLY EU S.A.R.L.收到参考号为XXWW025 MENTINUI-NOM 3 654654465/WC6565223323"的款项
"CaniR*I-CKOUION发行的欧元卡交易">
"Suil Flim KL RUIOKE SOR发行的欧元卡交易">

我有这三行,将匹配:

SAYLOR SELLY EU S.A.R.L.
警犬*I-CKOUION
KL RUIOKE SOR轻弹

我正在尝试并选择第2组:

(按|从|到((.*((带|\"(

但它不起作用。知道吗?

当您在评论中提到awk时,它不支持非贪婪量词.*?

您可能要做的是首先获得最长的匹配,然后再次在正则表达式的最后部分拆分该匹配,并获取第一项。

awk '
match($0,/(by |from |to )(.*)( with|")/, a) {
split(a[2], b, /( with|")/)
print b[1]
}
' file

输出

SAYLOR SELLY EU S.A.R.L.
CaniR* I- CKOUION
Suil Flim KL RUIOKE SOR

最新更新