簡體   English   中英

正則表達式匹配:不區分大小寫的帶空格的德語單詞(Python)

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

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