我正在尋找一種方法來編寫算法來解決字母沙拉。例如,如果我有字母正則表達式包含特定字符並且具有特定長度的字符串
ZDFOG
也知道,我尋找的字是長3個字符的詞匹配,如果我只能用每個字符一次?
讓我們假設我有一本帶有常用詞彙的字典。
所以RegXx應與
狗 狗 霧 霧 神 神
但不宜用字符串匹配一樣,如果他們是字典,因爲每一個字母的一部分應該包含一次:
ff Ø 鬥 GGG
那麼,有沒有去尋找所有單詞包含特定字符的字典和具有特定長度的優雅的方式?
我正在尋找一種方法來編寫算法來解決字母沙拉。例如,如果我有字母正則表達式包含特定字符並且具有特定長度的字符串
ZDFOG
也知道,我尋找的字是長3個字符的詞匹配,如果我只能用每個字符一次?
讓我們假設我有一本帶有常用詞彙的字典。
所以RegXx應與
狗 狗 霧 霧 神 神
但不宜用字符串匹配一樣,如果他們是字典,因爲每一個字母的一部分應該包含一次:
ff Ø 鬥 GGG
那麼,有沒有去尋找所有單詞包含特定字符的字典和具有特定長度的優雅的方式?
這很不清楚。
如果您的字典是常用字詞,爲什麼ffo doo Ggg
應該存在?
我認爲使用C程序得到你想要的會更好。正則表達式不是算法語言。
反正這是你想要什麼:\b(([A-Za-z])((?!\2)[A-Za-z])((?!\2|\3)[A-Za-z]))\b
它抓住你想要的只有3個不同的字母的單詞。
證明:https://regex101.com/r/wAbT99/3
但是你要知道,這個技術也許慢。
不考慮重複的字母,如egg
,解決方案很簡單;提前使用一個固定的樣子,對每個字母:
^(?=.*F)(?=.*O)(?=.*G).*
隨着重複,它有點醜陋:
^(?=.*E)(?=.*G.*G).*
你可以使用的通用解決方案:
^(?=(.*E){1})(?=(.*G){2}).*
凡數重複{n}
是該字母出現的次數是目標詞。360
所以我必須創建所有的組合來尋找,因爲在開始時,比解決方案中給出的字母更多?就像我例子中的字母Z一樣。 – Kingalione
@king no。展望的順序是無關緊要的。您需要爲每個不同的字母創建一個正確的數量。例如,爲了搜索「EGG」,正則表達式可以表示爲:(^ =(。* G){2})(?=。* E)。*'和'^(?=。* E) * G){2})。*'都是正確的 – Bohemian
是的,但讓我們假設在你的蛋例子中給出字母LTGEGU,字長必須是3個字母。所以我必須創建所有可以用字母LTGEGU和長度爲3的組合來匹配字典中的所有單詞或不是? – Kingalione
如果您發佈了一些輸入句子,搜索詞和預期的匹配項,這將是一件好事 – RomanPerekhrest
我已更新我的問題,謝謝 – Kingalione