如何在regexp中获得第一场比赛?

时间:2017-12-25 13:37:59

标签: regex

我有三个字符串如下:

Levofloxacin 500mg/100mL
Levofloxacin 500mg
Procaterol Hydrochloride …………… 25μg

第一行,我想在我的结果中得到'mg'而没有'mL'。

第二行,我想要'mg'。

第三行,我想得到'ug'。

我尝试过regexp模式:

(?!(.*[ ]{1}[0-9]+))[a-zA-Zμ]+

但是,第一行总是返回'mg'和'mL'......

我怎么能用regexp获得'mg'?

任何建议都将受到赞赏。

1 个答案:

答案 0 :(得分:0)

正如评论部分所述,试试这个正则表达式:

^\D*[\d.]+\K[a-zμ]+

Click for Demo

<强>解释

  • ^ - 断言字符串的开头
  • \D* - 匹配任何非数字字符的出现次数
  • [\d.]+ - 匹配任意字符<或li>的1次出现
  • \K - 删除目前已匹配的内容
  • [a-zμ]+ - 这就是你想要的。这将包含在第一个数字后出现的mg,ml等单位。如果还有其他特殊字符,例如μ,您也可以在此字符列表中添加它们