模式匹配来自正则表达式的字符串

时间:2018-01-25 18:48:50

标签: regex vba

我正在尝试从文本输入中匹配2组模式。从下面的例子中,我可以提取具有以下任何字符集的数字mg / mcg / ml / g

  

注射用美罗培南Hospira粉末(10小瓶,20 ml)500mg应与20 ml和500 mg相匹配。

我的正则表达式<packageReference>匹配10,20毫升,500毫克

2 个答案:

答案 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)