我无法在Python中编写负面的RE背后信息。这些是一些示例字符串(我有80,000条以上的文本消息):
患者100/64 bp是120/90 *一些字符串*
100H / 64患者bp 120/90
位置100c / 64患者bp120 / 90 *一些字符串*
*某些字符串* 100/64患者*此字符串没有'bp'值*
此处120/90
表示患者的血压。我只想提取“病房/病床”(例如:100/64
,100H/64
,100c/64
,100/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/