Python正则表达式希腊字符

Zep*_*hyr 1 python regex string extract placeholder

我有一些具有这种结构的字符串:<name> (<unit>). 我想提取nameunit; 执行我使用的这项任务regex,在大多数情况下,这一切都很好。
但是,在某些情况下,<unit>由希腊字符组成,例如?。在这些情况下,我的代码无法提取所需的两个部分。
这是我的代码:

import re

def name_unit_split(text):
    name = re.split(' \([A-Za-z]*\)', text)[0]
    unit = re.findall('\([A-Za-z]*\)', text)

    if unit != []:
        unit = unit[0][1:-1]
    else:
        unit = ''

    return name, unit

print(name_unit_split('distance (mm)'))
Run Code Online (Sandbox Code Playgroud)

我得到:

('distance', 'mm')
Run Code Online (Sandbox Code Playgroud)

但是当我尝试:

print(name_unit_split('resistance (?)'))
Run Code Online (Sandbox Code Playgroud)

我得到:

('resistance (?)', '')
Run Code Online (Sandbox Code Playgroud)

我搜索了其他正则表达式占位符并尝试使用这些,但没有成功:

name = re.split(' \([\p{Greek}]*\)', text)[0]
unit = re.findall('\([\p{Greek}]*\)', text)
Run Code Online (Sandbox Code Playgroud)

如何使用 查找字符串中的希腊字符(一个或多个,分组)regex
此外,是否有更好的方法来执行上述任务regex?我的意思是:有一种方法来提取两<name><unit>,并将它们保存在nameunitregex

whi*_*run 7

就像拉丁字母一样,希腊字母在 utf-8 编码中占据一个连续的空间,因此您可以使用\([?-??-?]*\)代替\([A-Za-z]*\来构建您的正则表达式。

我个人更喜欢使用正则表达式"[A-Za-z]* \([?-??-?]*\)"来检查模式是否成立并使用字符串函数来执行拆分作业。但我相信这取决于您的个人喜好。