如何使用 Ruby 将任何模式匹配到任何字符串?

How to match any pattern to a any string using Ruby?

我想在 Ruby 中创建一个接受以下参数的函数:

如果字符串与模式匹配,函数的 return 应该是 "true",如果是 "false"没有。

我第一步的做法:

使用正则表达式将输入字符串分隔成单词数组(例如 ["dog", "cat", "dog", "cat"])。

我的正则表达式专业知识不够好,无法为这个问题找到正确的正则表达式。

有谁知道如何执行适当的正则表达式,以便假设输入字符串始终是某种形式的模式来分隔重复出现的单词?

您可以使用捕获组和反向引用来多次匹配相同的子字符串,例如:

abab = /\A(.+)(.+)\z/
aabb = /\A(.+)(.+)\z/
aaaa = /\A(.+)\z/

'dogcatdogcat'.match?(abab) #=> true
'dogcatdogcat'.match?(aabb) #=> false
'dogcatdogcat'.match?(aaaa) #=> false

'carcarhousehouse'.match?(abab) #=> false
'carcarhousehouse'.match?(aabb) #=> true
'carcarhousehouse'.match?(aaaa) #=> false

在上面的模式中,(.+)定义了一个匹配一个或多个字符的捕获组。 </code> 然后引用第一个捕获组并匹配相同的子字符串。 (<code>为第2组以此类推)

\A\z 是匹配字符串开头和结尾的锚点。