首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析某些医学数据的Regex

解析某些医学数据的Regex
EN

Stack Overflow用户
提问于 2014-01-30 07:49:35
回答 1查看 217关注 0票数 1

我已经寻找了几个小时,如何做这个特殊的正则表达式魔术很少或没有运气。

我一直在玩弄解析我自己的一些医学数据(为什么不呢?)不幸的是,它以非常非结构化的文本文档的形式出现,没有标记(XML或HTML)。

具体来说,作为一个原型,我只想匹配我的LDL增量(胆固醇变化)的百分比。

它以几种不同的方式呈现出来:

代码语言:javascript
复制
LDL change since last visit: 10%

代码语言:javascript
复制
LDL change since last visit:
10%

代码语言:javascript
复制
LDL change since last visit:

10%

我一直试图在JavaScript中使用本机RegExp引擎来完成这一任务,但没有多少成功(我不愿承认)。我绝不是RegExp专家,但我一直在研究这样的一个表达式:

代码语言:javascript
复制
(?<=LDL change since last visit)*(0*(100\.00|[0-9]?[0-9]\.[0-9]{0,2})%) 

我知道它在JS中不起作用,因为缺少对?<=的支持。我在Ruby中测试了这些,但即使在那时候,它们也没有成功。有人能帮我找到办法吗?

编辑:

由于这个特定的度量在不同的区域出现了几次,我希望正则表达式能够匹配它们,并让它们可以在多个组中访问。假设匹配组0对应于脂配置文件部分,匹配组1对应于摘要。

代码语言:javascript
复制
Lipid profile
...
LDL change since last visit:

10%
...

Summary of Important Metrics
...
LDL change since last visit: 10%
...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-30 07:55:03

查找解决方案很复杂,因为大多数语言只支持固定或有限长度的后置断言。因此,更容易使用捕获组。(此外,在您使用的查找后面的*量词没有任何意义)。

既然你真的不需要验证这个数字(对吗?),我只需要

代码语言:javascript
复制
regexp = /LDL change since last visit:\s*([\d.]+)%/
match = regexp.match(subject)
if match
    match = match[1]
else
    match = nil
end

如果希望每个字符串匹配多个,请使用.scan()

代码语言:javascript
复制
subject.scan(/LDL change since last visit:\s*([\d.]+)%/)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21450611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档