Ruby正则表达式多次匹配
我想在给定的单词中查找搜索词。所以我们说的是正则表达式。Ruby正则表达式多次匹配,ruby,regex,Ruby,Regex,我想在给定的单词中查找搜索词。所以我们说的是正则表达式。 字母的顺序很重要,但我希望允许每个搜索词字母之间有字母 一个例子:德语单词seitenschneider包含单词seide,至少有两种方式: word: seitenschneider match 1: xxx.........xx. match 2: ......x...xxxx. 我想用尽可能少的字母找到结果,所以在本例中,我选择匹配2。 有没有办法用正则表达式实现这一点 我尝试取消通配符的reedy,但没有收到预期的结果:
字母的顺序很重要,但我希望允许每个搜索词字母之间有字母 一个例子:德语单词seitenschneider包含单词seide,至少有两种方式:
word: seitenschneider
match 1: xxx.........xx.
match 2: ......x...xxxx.
我想用尽可能少的字母找到结果,所以在本例中,我选择匹配2。有没有办法用正则表达式实现这一点 我尝试取消通配符的reedy,但没有收到预期的结果:
"seitenschneider".scan(/s.*?e.*?i.*?d.*?e/)
=> ["seitenschneide"]
我想要实现的是:
"seitenschneider".scan(magic_regex_thingy)
=> ["schneide"]
我也会很高兴有这样的事情
"seitenschneider".scan(another_magic_regex_thingy)
=> ["seitenschneide", "schneide"]
因为我可以自己找到最短的单词
关于如何到达那里有什么提示吗?关于第二个问题:
"seitenschneider".scan(/(?=(s.*?e.*?i.*?d.*?e))/).flatten
# => ["seitenschneide", "schneide"]
使用上面的正则表达式获取最短的一个:
"seitenschneider".scan(/(?=(s.*?e.*?i.*?d.*?e))/).flatten.min_by(&:length)
# => "schneide"
关于第二个问题:
"seitenschneider".scan(/(?=(s.*?e.*?i.*?d.*?e))/).flatten
# => ["seitenschneide", "schneide"]
使用上面的正则表达式获取最短的一个:
"seitenschneider".scan(/(?=(s.*?e.*?i.*?d.*?e))/).flatten.min_by(&:length)
# => "schneide"