首页 > 解决方案 > 正则表达式匹配:不区分大小写的带空格的德语单词(Python)

问题描述

我有一个问题,我想在 [] 大括号内匹配任意数量的德语单词,忽略大小写。表达式应该只匹配空格和单词,没有别的,即没有标点符号或括号 例如:表达式 ['über das thema schreibt'] 应该与 ['Über', 'das', 'Thema', 'schreibt'] 匹配我有一个包含前一个顺序的项目的列表,另一个包含后一个顺序的项目,只要单词相同,它们都应该匹配。

我尝试使用的代码是 -

regex = re.findall('[(a-zA-Z_äöüÄÖÜß\s+)]', str(term))

或者

re.findall('[(\S\s+)]', str(term))

但他们没有工作。请帮我找到解决方案

标签: pythonregex

解决方案


以最简单的形式使用\w+作品来查找单词(非 ascii 字符需要 Unicode 标志),但是由于您希望它们位于方括号内(以及我假设的引号),因此您需要一些复杂的东西

\[(['\"])((\w+\s?)+)\1\]

\[and\]用于匹配方括号
['\"]匹配任一引号,并\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(对我来说,在终端中似乎不起作用的轻微编辑)


推荐阅读