Ruby 带有';和';
如果一个字符串匹配三个正则表达式,我需要返回Ruby 带有';和';,ruby,regex,Ruby,Regex,如果一个字符串匹配三个正则表达式,我需要返回true。我有很多关于每个正则表达式模式的正则表达式选项。我可以对这三个值中的每一个使用单独的匹配/扫描,并将它们与和结合起来,查看它们是否都返回TRUE。这管子坏了 在下面的代码中,我只需要为第一个mystring3获取TRUE: mystr3= ' OK 3 values MyServer and myNode and myuser TRUE ' mystr2= 'has on 2 values mynode## and .myser
true
。我有很多关于每个正则表达式模式的正则表达式选项。我可以对这三个值中的每一个使用单独的匹配
/扫描
,并将它们与和
结合起来,查看它们是否都返回TRUE。这管子坏了
在下面的代码中,我只需要为第一个mystring3
获取TRUE
:
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
但我认为应该有比这更简单的方法。要检查字符串是否与这三个字符串匹配,可以对子表达式使用三次lookahead:
regex = /^(?=.*#{regex1})(?=.*#{regex2})(?=.*#{regex3})/
Tx CP!!我在我的示例字符串上尝试了你的正则表达式,没有返回任何内容,检查更多,无论这些键盘的顺序如何,它都能工作吗,很抱歉忘记提到这一点。对我有效:请注意,匹配的子字符串(如果有)将是空字符串,这与不匹配完全不同。是的,lookaheads之间不使用字符,因此它们可以按任何顺序排列。再次发送,我需要自己再多教一点,标记为应答。现在对我来说一切正常,再次发送。关键是,如果字符串
str
匹配所有三个正则表达式,str=~regex
或str.match
或str[regex]
all返回一个“truthy”值(分别是数值偏移量、MatchData
对象或空字符串);否则全部返回nil
。我们可以使这些表达式中的任何一个返回true
或false
,方法是在它们前面加上代码>;例如,!!(str=~regex)
。自从这个问题发布后,我们得到了返回true
或false
的方法。