0

正则表达式对我来说一直是一门黑暗的艺术,我已经很久没有编程了,但这要么不可能/像我希望的那样简单。

我正在尝试写入正则表达式以搜索以下文本

 8825| -  MIA *** LHR **  JFK JFK -  DME -  SIN *** *** SYD *** SIN *** LHR **   -   -  BOS *** LHR  -   -   -  GRU *** ***      

它应该匹配

MIA *** LHR ** or
JFK JFK or 
SIN *** *** SYD *** SIN *** LHR ** or
BOS *** LHR or
GRU *** *** or
DME

这个

([A-Z]{3})\s(([A-Z]{3}|[*]{2,3})\s)+ 

匹配所有部分

DME

现在我被困住了。感激地收到任何帮助或指点。

4

2 回答 2

0

这将适用于给出的示例:

[A-Z]{3}(((?:\s*[*]{3}\s*)+([A-Z]{3})+)*(\s*[*]{2,3}\s*?)?)|[A-Z]{3}(\s*[A-Z]{3})?

但是,我建议您针对要匹配的内容指定更严格的规则 - 如果不这样做,我们在这里所做的一切只是猜测,我们提出的正则表达式可能不适用于其他示例,如果它们以任何方式不同的。

于 2012-04-27T12:48:36.197 回答
0

试试这个:(如果猜到你可能需要什么......) -更新

([A-Z]{3}\s([A-Z]{3}|([\*]{2,3}\s){1,2})?)+

演示:

http://regexr.com?30po5

火柴 :

MIA *** LHR **
JFK JFK
SIN *** *** SYD *** SIN *** LHR **
BOS *** LHR
GRU *** ***
DME
于 2012-04-27T10:52:41.787 回答