[英]Ruby Regex match multiple times
我想在給定單詞中找到搜索詞。 所以我們在說正則表達式。
字母的順序很重要,但是我希望每個搜索詞的字母之間都可以有字母。
例如 :德語單詞seitenschneider至少以兩種方式包含seide單詞:
word: seitenschneider
match 1: xxx.........xx.
match 2: ......x...xxxx.
我希望找到盡可能少的字母的結果,因此在這種情況下,我將使用第2個匹配項。
有沒有辦法用正則表達式做到這一點?
我嘗試使通配符不愉快,但沒有收到預期的結果:
"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"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.