[英]Regex matching: Case insensitive German words with spaces (Python)
我有一個問題,我想在 [] 大括號內匹配任意數量的德語單詞,忽略大小寫。 表達式應該只匹配空格和單詞,沒有別的,即沒有標點符號或括號 例如:表達式 ['über das thema schreibt'] 應該與 ['Über', 'das', 'Thema', 'schreibt'] 匹配我有一個包含前一個順序的項目的列表,另一個包含后一個順序的項目,只要單詞相同,它們都應該匹配。
我試過的代碼是 -
regex = re.findall('[(a-zA-Z_äöüÄÖÜß\s+)]', str(term))
或者
re.findall('[(\S\s+)]', str(term))
但他們沒有工作。 請幫我找到解決方案
以最簡單的形式使用\\w+
用於查找單詞(需要非 ascii 字符的 Unicode 標志),但是由於您希望它們位於方括號內(我假設是引號),因此您需要一些復雜的東西
\[(['\"])((\w+\s?)+)\1\]
\\[
和\\]
用於匹配方括號
['\\"]
匹配任一引號,而\\1
確保同一引號是另一端
\\w+
捕獲 1 個單詞。 \\s?
用於可選空間。
整個字符串在第二組中,您可以將其拆分以獲取列表
import re
text = "['über das thema schreibt']"
regex = re.compile("\[(['\"])((\w+\s?)+)['\"]\]", flags=re.U)
match = regex.match(text)
if match:
print(match.group(2).split())
(輕微編輯\\1
對我來說似乎在終端中不起作用)
根據評論更新以匹配每個單詞。 這只是忽略空格、單引號和方括號
import re
text = "['über das thema schreibt']"
re.findall("([a-zA-Z_äöüÄÖÜß]+)", str(text))
# ['über', 'das', 'thema', 'schreibt']
我找到了最簡單的解決方案:
for a, b in zip(list1, list2):
reg_a = re.findall('[(\w\s+)]', str(a).lower())
reg_b = re.findall('[(\w\s+)]', str(b).lower())
if reg_a == reg_b:
return True
else
return False
如果您正在解決區分大小寫的問題,請添加正則表達式flaf re.IGNORECASE
如
re.findall('[(\S\s+)]', str(term),re.IGNORECASE)
如果沒有幫助,您可能需要考慮將它們轉換為 unicode。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.