python 中具有不同规范的正则表达式函数

Regex function in python with different specifications

我有一列文本数据,我正在使用 ','.join() 函数将其转换为字符串。数据如下所示。我只想从转换后的字符串中提取 BP/Blood Pressure/ Systolic Blood Pressure 及其相应值。

我知道我必须使用 re.findall()。但是我无法获得这些值,因为有多个条件。

我想要下面显示的图像标记线的 BP 值。

我希望使用正则表达式函数提取所有这些变体。

我现在的代码只有第一个变体。我想进一步扩展它以获得所有变化。

list_items =  file['Text'].tolist()

listToStr = ','.join([str(elem) for elem in list_items])


def get_BP(s):
    #s = s.lower()
    #print(s)
    #regex = r'(BP \d+\/\d+)'
    regex = r'((?:BP|Blood Pressure) \d+\/\d+)'
    try:
        return re.findall(regex,s)
    except:
        pass

x = get_BP(listToStr)
x

我最终想要的输出是这样的。

['BP 98/60', 'BP 108/60', 'BP 96/60', 'BP 120/75', 'Blood Pressure 106/63', 
 'B/P - Systolic 104','B/P - Diastolic 72','BP-Sitting 109/70 mmH',
 'BP: 101/72','Systolic Blood Pressure 100 mmHg','Diastolic Blood Pressure 68 mmHg']

由于我是正则表达式函数的新手,任何帮助将不胜感激。

谢谢。

根据具有所需结果的列表,您可以使用交替 | 来指定所有变体。

\b(?:BP:?(?:-Sitting)?|Blood Pressure) \d+/\d+(?: mmHg?)?|B/P - (?:Sys|Dias)tolic \d+|(?:Sys|Dias)tolic Blood Pressure \d+ \w+\b

Regex demo