我无法在Python中编写负面的RE背后信息。这些是一些示例字符串(我有80,000条以上的文本消息):

患者100/64 bp是120/90 *一些字符串*
100H / 64患者bp 120/90
位置100c / 64患者bp120 / 90 *一些字符串*
*某些字符串* 100/64患者*此字符串没有'bp'值*


此处120/90表示患者的血压。我只想提取“病房/病床”(例如:100/64100H/64100c/64100/64)而不是血压。由于它需要固定的长度,因此我无法编写否定的后向断言。这是我的RE:

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

这是行不通的,因为我的负面表情在.*后..请对此提供帮助。

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

最佳答案

如果血压始终在您的表情之后,那么您只需要扭转您的想法,并且仅在跟随“ bp”时才匹配。为了向前看,允许使用量词。

(\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/

10-12 16:15