我已经寻找了几个小时,如何做这个特殊的正则表达式魔术很少或没有运气。
我一直在玩弄解析我自己的一些医学数据(为什么不呢?)不幸的是,它以非常非结构化的文本文档的形式出现,没有标记(XML或HTML)。
具体来说,作为一个原型,我只想匹配我的LDL增量(胆固醇变化)的百分比。
它以几种不同的方式呈现出来:
LDL change since last visit: 10%或
LDL change since last visit:
10%或
LDL change since last visit:
10%我一直试图在JavaScript中使用本机RegExp引擎来完成这一任务,但没有多少成功(我不愿承认)。我绝不是RegExp专家,但我一直在研究这样的一个表达式:
(?<=LDL change since last visit)*(0*(100\.00|[0-9]?[0-9]\.[0-9]{0,2})%) 我知道它在JS中不起作用,因为缺少对?<=的支持。我在Ruby中测试了这些,但即使在那时候,它们也没有成功。有人能帮我找到办法吗?
编辑:
由于这个特定的度量在不同的区域出现了几次,我希望正则表达式能够匹配它们,并让它们可以在多个组中访问。假设匹配组0对应于脂配置文件部分,匹配组1对应于摘要。
Lipid profile
...
LDL change since last visit:
10%
...
Summary of Important Metrics
...
LDL change since last visit: 10%
...发布于 2014-01-30 07:55:03
查找解决方案很复杂,因为大多数语言只支持固定或有限长度的后置断言。因此,更容易使用捕获组。(此外,在您使用的查找后面的*量词没有任何意义)。
既然你真的不需要验证这个数字(对吗?),我只需要
regexp = /LDL change since last visit:\s*([\d.]+)%/
match = regexp.match(subject)
if match
match = match[1]
else
match = nil
end如果希望每个字符串匹配多个,请使用.scan()
subject.scan(/LDL change since last visit:\s*([\d.]+)%/)https://stackoverflow.com/questions/21450611
复制相似问题