Регулярное выражение для трех выражений с «И» - PullRequest
0 голосов
/ 16 сентября 2018

Мне нужно вернуть true, если строка соответствует трем регулярным выражениям. У меня есть много вариантов регулярных выражений вокруг каждого шаблона регулярных выражений. Я могу использовать отдельные match / scan для каждого из трех значений и соединить их с AND, чтобы увидеть, все ли они возвращают TRUE. Труба не работает.

В приведенном ниже коде мне нужно получить TRUE только для первого mystring3:

mystr3= '  OK 3 values MyServer  and myNode  and myuser  TRUE '
mystr2= 'has on 2 values   mynode##  and .myserver should be FALSE'
mystr1= ' has on 1 values  Myserver  should be FALSE'

regex1 = /\bmyserver\b/i ;   regex2 = /\bmynode\b/i ;   regex3 = /\bmyuser\b/i

regex = /#{regex1}|#{regex2}|#{regex3}/  ## AND  /#{regex2}/  and /#{regex3}/

p  'match3 ' + mystr3.scan(regex).to_s
p  'match2 ' + mystr2.scan(regex).to_s

Но я думаю, что должно быть что-то более простое.

1 Ответ

0 голосов
/ 16 сентября 2018

Чтобы убедиться, что строка соответствует all three, вы можете использовать lookahead для подвыражения три раза:

regex = /^(?=.*#{regex1})(?=.*#{regex2})(?=.*#{regex3})/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...