正则表达式不会考虑可选组,即使它存在

时间:2019-03-04 21:33:09

标签: javascript regex

我正在尝试在TS中使用RegExp捕获以下行

таб. 10мг/10мг х 30
x 30

我正在使用此正则表达式

^.*?(капс|капли|таб|амп|супп|фл|мазь|гель|паста|кап|крем)?(?:(?:((\d+)(?:,\d+)?)\s?(мл|л|мг|г))(?:\/((\d+)(?:,\d+)?)\s?(мл|л|мг|г))?).*?(?:(?:x|х)\s*(\d+))?$

问题是,如果我在最后一个?之前使用.*?,它不会捕获第一行中的所有数字,如果我不这样做,它自然不会t捕获第二行。

我有什么想念的吗?谢谢!

1 个答案:

答案 0 :(得分:0)

您的模式不允许.,并且在组之后必须有所有与таб匹配的替代选项。试试这个:

^.*?(?:(капс|капли|таб|амп|супп|фл|мазь|гель|паста|кап|крем)\.\s+)?(?:(?:((\d+)(?:,\d+)?)\s?(мл|л|мг|г))(?:\/((\d+)(?:,\d+)?)\s?(мл|л|мг|г))?).*?(?:(?:x|х)\s*(\d+))?$

DEMO