簡體   English   中英

Ruby Regex多次匹配

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM