有沒有辦法使用re.findall
或另一個正則表達式來計算指定順序中的單詞出現次數,由任意數量的單詞分隔?Python正則表達式查找單詞與其他詞分開
這裏是一個「強力」的實施:
def search_query(query, page):
count=i=0
for word in page.split():
if word == query[i]: i+=1
if i==len(query):
count+=1
break
print count
search_query(['hello','kilojoules'],'hello my good friend kilojoules')
1
例如,當查詢hello kilojoules
,我想認識hello my good friend kilojoules
爲我的查詢的實例,但kilojoules is my good friend
不被計算在內。
這是我的一個令人滿意的正則表達式:re.findall('hello\s\Skilojoules','hello my friend kilojoules')
。這不起作用。我認爲這會起作用,因爲我對這個說法的理解是「找到由空格或空格分隔的hello
和kilojoules
的所有實例」。
也許'(?s)\ bhello \ b。*?\ bkilojoules \ b'?請注意'\ s \ S'只是一個空格,後面跟着一個非空格。 'hello \ s \ Skilojoules'可以匹配'hello bkilojoules',但不匹配'hello kilojoules'。 –
這裏一般嘟about關於使用[原始字符串](https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals),除非你喜歡鍵入任何原因的反斜槓按鈕, – NightShadeQueen
@stribizhev're.findall('(?s)\ bhello \ b。*?\ bkilojoules \ b','hello my amigo kilojoules')'nothing nothing – kilojoules