我正在尝试从文本输入中匹配2组模式。从下面的例子中,我可以提取具有以下任何字符集的数字mg / mcg / ml / g
注射用美罗培南Hospira粉末(10小瓶,20 ml)500mg应与20 ml和500 mg相匹配。
我的正则表达式<packageReference>
匹配10,20毫升,500毫克
答案 0 :(得分:2)
([\d*.?\d+]+\s*(?:mg|g|mcg|ml)(?![a-z,A-Z])+)
这对我有用。我在你的表达中注意到的两个问题是将单位包裹在()
而不是[]
中,而不是特意调出空白字符作为一种可能性。
这也假设您正在使用的正则表达式可以处理非捕获组(?:)
这与“20石墨”之类的东西不匹配。
答案 1 :(得分:0)
这应该对你有用(\d+(?:\.\d*)?|\.\d+)\s*(g|m(?:c?g|l))
https://regex101.com/r/bKMmKi/1
每场比赛:
第1组中的数量
第2组中的体积单位
格式化:
( # (1 start), The decimal amount
\d+
(?: \. \d* )?
| \. \d+
) # (1 end)
\s* # Optional whitespace
( # (2 start), The allowed volume units
g
| m
(?: c?g | l )
) # (2 end)