python正则表达式在字符的最后两次出现之间保留文本

标签 python regex

正如标题所说,我想提取字符串中最后两次出现的字符之间的文本。

我有:

'9500 anti-Xa IU/ml - 0,6 ml 5700 IU -'
'120 mg/ml – 0.165 ml -'
'300-300-300 IR/ml  or  IC/ml - 10 ml -'
'Fluocortolone-21-pivalate 1 mg/g, Lidocaine hydrochloride 20 mg/g - 15 g -'

我想要:

'0,6 ml 5700 IU'
'0.165 ml'
'10 ml'
'15 g'

我尝试使用 -\s*.*- 但它匹配第一个和最后一个 - 之间的所有内容。正确的正则表达式是什么?

最佳答案

通过搜索:

import re
[re.search(r'[-–]\s*([^-–]+?)\s*[-–][^-–]*$', x).group(1) for x in l]

或者拆分:

[re.split(r'\s+[-–]\s*', x, 2)[-2] for x in l]

输出:['0,6 ml 5700 IU', '0.165 ml', '10 ml', '15 g']

使用的输入:

l = ['9500 anti-Xa IU/ml - 0,6 ml 5700 IU -',
     '120 mg/ml – 0.165 ml -',
     '300-300-300 IR/ml  or  IC/ml - 10 ml -',
     'Fluocortolone-21-pivalate 1 mg/g, Lidocaine hydrochloride 20 mg/g - 15 g -'
    ]

regex demo

关于python正则表达式在字符的最后两次出现之间保留文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73150043/

相关文章:

regex - 区域设置感知 Perl 正则表达式(匹配单词边界)

javascript - 使用正则表达式从复杂字符串中提取主题标签

python - 相关查询中的 Django 元排序

python - 如何在 MySQL 数据库上保存 python 对象?

python - 将函数输出放入 Python 列表

python - 如何从 Python 中的字符串中删除所有以 ":"结尾的单词?

php - 检查两个 URL 字符串是否相同 PHP

javascript - 动态正则表达式

python - 用逗号打印unicode

Python - 如果键等于值,则从列表中删除字典