如何在Ruby Regex中使用AND

ger*_*rky 6 ruby regex

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

你如何在红宝石中做和(和)正则表达式?

例如:

cat and dog
cat
dog

I just want to match "cat and dog"
Run Code Online (Sandbox Code Playgroud)

ste*_*ema 14

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

(?=.*cat)(?=.*dog).*
Run Code Online (Sandbox Code Playgroud)

在Rubular上 看到它更新链接!

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

优点是它也会匹配

狗和猫

而且不仅仅是

下大雨

但它也会匹配

狗和猫

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

(?=.*\bcat\b)(?=.*\bdog\b).*
Run Code Online (Sandbox Code Playgroud)

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

在这里看到它