如何在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'
?