可选组的困难

时间:2012-04-27 10:42:09

标签: regex

正则表达式对我来说总是一种黑暗的艺术,而且我已经离开编程太久了,但这要么不可能/我希望这么简单。

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

 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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

这适用于给出的示例:

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

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