Рубин регулярное выражение, чтобы найти вложенные играм


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

/a .*programming .*test .*this/i

И тестовая строка

This is a test This is a programming test This is a programming test in any language

Матч, который я получаю, это

a test This is a programming test This

Но есть еще одно более короткое совпадение "тест программирования это" , которое это регулярное выражение не может найти, я использовал метод сканирования, чтобы найти все совпадения, но это даже не может захватить это .

Любая помощь очень ценится

1 2

1 ответ:

Регулярное выражение-очень сложная вещь! Вам действительно нужно знать, какие части вашей строки имеют решающее значение для соответствия, а какие нет. Есть масса способов выполнить матч, но не так просто угадать, чего вы на самом деле хотите:

s = "This is a test This is a programming test This is a programming test in any language"
s.match(/a [^a]*programming .*test .*this/i)[0]
 => "a programming test This"