嗨,程序员们,我有一个语句字符串,我只需要获取其中的状态
TKT-2297433475972 RCI- 1A LOC-696L9U
OD-NYCNYC SI- FCMI-K POI-DCA DOI-02JUN14 IOI-49881134
1.SINGH/BALJINDER ADT ST
1 OJFK KU 102 C 03JUN2145 OK CLRTUS5 F 2PC // Want this F
2 XKWI KU 381 C 04JUN2230 OK CLRTUS5 F 2PC // Want this F
3 ODEL KU 382 C 20JUN0555 OK CLRTUS5 O 2PC // Want this 0
4 XKWI KU 117 C 20JUN0905 OK CLRTUS5 I 08JUN 2PC // Want this I
JFK
FARE I IT // Don't want this I
TOTALTAX USD 462.04
TOTAL IT
/FC NYC KU X/KWI KU DEL M/BT CLRTUS5 KU X/KWI KU NYC M/BT CLRTUS
5 END XT5.50YC17.50US17.50US5.00XA7.00XY2.50AY1.60YX25.08IN11.51
YM20.70IN3.65WO4.50XF JFK4.5
TKT-0017434068283-284 RCI- 1A LOC-69DQPQ
OD-AUSAUS SI- FCMI-I POI-DCA DOI-03JUN14
1.MIMBELA/JAIME JOSE ADT ST
1 OAUS AA 290 M 02JUL1005 OK MHXE1NA/CONS O 02JUL02JUL 1PC // Want this 0
2 XJFK AA 66 M 02JUL1730 OK MHXE1NA/CONS O 02JUL02JUL 1PC // Want this 0
3 BCN ARNK
4 OFCO AA 111 L 29JUL1115 OK LHXETNI4/CONS O 29JUL29JUL 1PC // Want this 0
5 XORD AA1398 L 29JUL2040 OK LHXETNI4/CONS O 29JUL29JUL 1PC // Want this 0
AUS
FARE I IT// Don't want this I
TOTALTAX USD 639.21
TOTAL IT
在上面的字符串中我只需要获取 ST
先这样
F
F
O
I
目前我正在使用这个正则表达式 (?:\s[A-Z]{1}\s\s)
通过使用此正则表达式,它还为我提供了 FARE 前面的 I 值,我不希望我如何只获得 ST 而不是 I 出现在 FARE 之后。
任何帮助将不胜感激
请您参考如下方法:
你知道,我们只是在猜测,但这有什么用:
^\d .+?\W{2}([A-Z]) \W{2}
获取第二个匹配组
这是一个直观的解释:https://www.debuggex.com/r/kAjngGwRrsHQARYE
准确地说:这适用于忽略大小写,但更重要的是:必须设置多行开关,以便 ^ 匹配行的开头。
这是给你的C#代码
var foo = "1 OJFK KU 102 C 03JUN2145 OK CLRTUS5 F 2PC";
var r = new Regex(@"^\d .+?\W{2}([A-Z]) \W{2}", RegexOptions.IgnoreCase | RegexOptions.Multiline);
var m = r.Matches(foo);
Console.WriteLine(m[0].Groups[1]);
