2016-09-28 1 views
1

Я пытаюсь соответствовать строке с этим регулярным выражением:Два регулярное выражение совпадает с пространством между матчами

Регулярное выражение:

[ ](\d{4}|\d{4}[A-Za-z]{3})[ ] 

Примечание: там может быть 3-х символов после цифры, вот почему [A-Za-z] {3} находится там.

Это строка I wan't, чтобы соответствовать в:

281320Z 26015KT 9999 3333 FEW028 SCT033 BKN053 16/10 Q1007= 

Так что в этом случае он будет только выбрать 9999 , так как есть пространство, которое будет match1 резерве. В этом случае:

281320Z 26015KT 9999 3333 4444 FEW028 SCT033 BKN053 16/10 Q1007= 

9999 и 4444 будут выбраны.

Как я могу это сделать 9999, 3333, 4444 выбрать?

ответ

3

Вы можете использовать регулярные выражения, как это:

\b(\d{4})(?:\b|[A-Z]{3}) 

Working demo

+0

'Там может быть 3-х символов после numbers' – Kilazur

+0

@Kilazur спасибо за указание, что фиксированный ... проверить это сейчас. –

+0

Фантастический! Спасибо огромное! – Denniz

1

\b(\d{4})(?:[A-Za-z]{3})?\b должен сделать трюк.

(?:) - группа, не связанная с захватом, мы используем ее с ?, чтобы указать, что ее содержимое может отображаться как ноль, так и один раз.

Получить четыре цифры с помощью $1

Смежные вопросы