问题描述
我正在寻找解决以下问题的正则表达式。在下面的示例中,我提取了VITMINC
测试字符串
1. As VITMINC##1-0-1##1 days.As
2. amlodipine ##vitamin c##diclo##tabramycin eye drop##metformin##0-0-1##15 days. amlodipine ##1-0-1## 3 days.
3. XyloMetazoline(P) Nasal drops##0-1-0##2 days. Paracetamol 500mg tab##0.5-0-0-0##2 days. VITMINC##0.5-0-0##2 days. Chlorpheniramine maleate 4mg tab##0-1-0##2 days.
4. VITMINC##0-0-0-1##2 days.
5. amlodipine##vitamin c##diclo##tabramycin eye drop##metformin##0-0-1##15 days.
上述字符串的样本输出
1. VITMINC##1-0-1##1 days
2. ##vitamin c##diclo##tabramycin eye drop##metformin##0-0-1##15 days
3. VITMINC##0.5-0-0##2 day
4. VITMINC##0-0-0-1##2 days
5. vitamin c##diclo##tabramycin eye drop##metformin##0-0-1##15 days
我正在尝试使用以下正则表达式,但未获得预期的输出
VITMINC##.*##([0-9]+ [days]){1}?
VITMINC##.*##([0-9]+ [days])*?
VITMINC##.*##[0-9]+ days
VITMINC##.*##([0-9]+ days){1}?
对不起,如果我的解释不好。并在此先感谢。
解决方法
假设您实际上并不想在比赛开始时使用#
个字符(示例2和5是自相矛盾的),则可以使用
(?i)VITA?MIN\s*C##.*?##[0-9]+ days
请参见regex demo。
详细信息
-
(?i)
-不区分大小写的修饰符 -
VITA?MIN
-VITAMIN
或VITMIN
-
\s*
-0个或多个空格 -
C##
-一个C##
子字符串 -
.*?
-除换行符以外的任何零个或多个字符,应尽可能少 -
##
-一个##
子字符串 -
[0-9]+ days
-1个或多个数字,空格,days
子字符串。