如何在Ruby Regex中使用AND

我遇到Ruby正则表达式的问题。

你如何在ruby中做和(和)正则表达式?

例如:

cat and dog cat dog I just want to match "cat and dog" 

你可以使用积极的前瞻做一些像AND的事情

 (?=.*cat)(?=.*dog).* 

在Rubular上看到它更新链接!

这个正向前瞻(?=.*cat)检查字符串中是否有“cat”,然后使用(?=.*dog)为“dog”做同样的事情。 如果这两个断言都为真,则完整的字符串与末尾的.*匹配。

优点是它也会匹配

狗和猫

而且不仅仅是

下大雨

但它也会匹配

狗和猫

如果你想要完全匹配,那么使用它

 (?=.*\bcat\b)(?=.*\bdog\b).* 

\b是单词边界,即它在单词和非单词字符之间匹配。

在这里看到它

你的问题不是很清楚。

如果您希望仅匹配包含“cat” “dog”(可能是单词的一部分)的字符串,您可以执行以下操作:

 /^.*(cat.*dog|dog.*cat).*$/ 

上面的正则表达式将匹配“连接教条”,但不匹配“连接”。

如果您想确保“猫”和“狗”自己显示为单词,请执行以下操作:

 /^.*(\bcat\b.*\bdog\b|\bdog\b.*\bcat\b).*$/ 

上面的正则表达式将匹配“猫与狗”,但不匹配“串联教条”或“猫教条”。

资料来源: http : //ruby-doc.org/docs/ProgrammingRuby/html/intro.html#S5

并且是正则表达式中的默认操作,即首先匹配,然后依次执行,依此类推。

匹配猫和狗,使用类似的东西

 cat.*dog 

这意味着,匹配“cat”后跟任何东西,然后是“dog”。 但话又说回来,我可能会误解你的问题……

这取决于你想要什么。

你可以使用外卡

 cat.+dog 

要么

 cat.+dog|dog.+cat 

要么

 cat +and +dog 

Regexp没有and操作符,只是因为它没有意义。 它永远不会匹配: String如何同时成为'cat' 'dog'