我一直在盯着這個問題好幾個小時,我不知道用什麼正則表達式格式來解決這個問題。用正則表達式匹配單詞(Python 3)
問題:
鑑於以下的輸入字符串,查找所有可能的輸出字5個字符或更長的時間。
- qwertyuytresdftyuioknn
- gijakjthoijerjidsdfnokg
你的程序應該發現,可以從提供的字符串中導出的所有可能的單詞(5+字符)。 使用http://norvig.com/ngrams/enable1.txt作爲您的搜索字典。 輸出詞的順序無關緊要。
- 皇后問題
- gaeing garring聚會門geeing gieing去 戈林對輸入字符串
假設:
- QWERTY鍵盤
- 小寫AZ而已,沒有空格或標點符號
- 輸入字符串的第一個和最後一個字符將始終匹配 所需輸出字的第一個和最後一個字符。
- 不要假設用戶採取字母
- 輸出字的每個字母之間的最有效的路徑將出現在輸入字符串
嘗試的解決方案:
首先我下載的了從該網頁中的文字並將它們存儲在我的計算機中的一個文件中('words.txt'):
import requests
res = requests.get('http://norvig.com/ngrams/enable1.txt')
res.raise_for_status()
fp = open('words.txt', 'wb')
for chunk in res.iter_content(100000):
fp.write(chunk)
fp.close()
試圖用正則表達式匹配我需要的詞。問題是我不知道如何格式化我的re.compile()
來實現這一點。
import re
input = 'qwertyuytresdftyuioknn' #example
fp= open('words.txt')
string = fp.read()
regex = re.compile(input[0]+'\w{3,}'+input[-1]) #wrong need help here
regex.findall(string)
由於這是顯而易見的,這是錯誤的,因爲我需要從我的輸入字符串形式去匹配字母從左到右,沒有任何字母這我錯誤地\w{3,}
做。任何幫助到這將不勝感激。
https://www.reddit.com/r/dailyprogrammer/comments/53ijnb/20160919_challenge_284_easy_wandering_fingers/ \t 它實際上是從reddit的只是實踐的一個挑戰。 – tadm123
彼得,但我需要匹配從左向右掃字的字母......'[adfg] {3,}以任意順序匹配字母。 – tadm123
從pythons正則表達式文檔:'(?<= ...)'匹配如果字符串中的當前位置前面是匹配...,匹配結束於當前位置。因此,我們可以得到如下的結論:(1)()()()()() 4})n $'? – Peter