我无法在 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/64
、 100H/64
、 100c/64
、 100/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)
这意味着
(?=.*\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]?)
关于python - Python 中的负回顾 RE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6606958/