REGEX 用于匹配字符串加上第一次出现的子字符串

REGEX for matching string plus first occurrence of the sub string

我正在寻找可以解决以下问题的正则表达式。在下面的示例中,我正在提取 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 是 self-contradictory),您可以使用

(?i)VITA?MIN\s*C##.*?##[0-9]+ days

参见regex demo

详情

  • (?i) - 不区分大小写的修饰符
  • VITA?MIN - VITAMINVITMIN
  • \s* - 0 个或更多白色spaces
  • C## - C## 子串
  • .*? - 除换行字符外的任何零个或多个字符,尽可能少
  • ## - ## 子串
  • [0-9]+ days - 1 个或多个数字,space,days 子字符串。