python - Python 中的负回顾 RE

标签 python regex string-formatting

我无法在 Python 中编写负后向 RE。这些是一些示例字符串(我有超过 80,000 条这样的短信):

patient 100/64  bp is 120/90 *some string*  
100H/64 patient bp 120/90  
location 100c/64 patient bp120/90 *some string*
*some string* 100/64 patient *this string with no 'bp' value*

这里120/90指的是病人的血压。我只想提取“病房#/床号”(例如: 100/64100H/64100c/64100/64 )而不是血压。我无法编写否定后向断言,因为它需要固定长度。这是我的回复:

(?<!bp.*)(\b[0-9]{1,3}[a-zA-Z]?)\/([0-9]{1,3}[a-zA-Z]?\b)

这不能像我那样工作.*在消极的回顾中..请帮助我。

编辑:每条患者记录都以新行开始,我将这些记录保存在一个文本文件中,该文件是从 Hadoop 处理中获取的。血压值并不总是在最后(或者可能不会出现在某些记录中),病房/床位值并不总是在开头。

最佳答案

如果血压总是在你的表达之后,那么只需改变你的想法,仅当“bp”跟随时才匹配。为了展望 future ,它允许有量词。

(\b[0-9]{1,3}[a-zA-Z]?)\/([0-9]{1,3}[a-zA-Z]?\b)(?=.*\bbp)

查看here at Regexr

这意味着

(?=.*\bbp) 正向前瞻,确保后面跟着字符串 bp

如果您无法中继“bp”,则只需检查相同的模式是否在展望中再次重复,如下所示

(\b[0-9]{1,3}[a-zA-Z]?)\/([0-9]{1,3}[a-zA-Z]?\b)(?=.*[0-9]{1,3}[a-zA-Z]?\/[0-9]{1,3}[a-zA-Z]?)

查看here on Regexr

关于python - Python 中的负回顾 RE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6606958/

相关文章:

javascript - 使用正则表达式在字符串中查找日期

php - 使用 preg_replace 时如何忽略字符串中的某些单词

python - 将字典值加载到 Pandas 数据框的行值中

python - 使用 pytest_postgresql 进行测试时无法在测试数据库中创建表

python - 无法使用 Python 和 re 从列表中提取特定模式

Python 字符串格式化 - 可以使用 lambda 吗?

c - Format String 漏洞困扰

java - 如何格式化日期

python - 是否可以使用 Kotlin 制作 Jython 模块?

python - 我在传递给我的用户定义的 __deepcopy__ 函数的访问字典中放了什么?