首页 > 解决方案 > 正则表达式强制和可选组

问题描述

我想创建一个正则表达式,其中包含必须包含在字符串中的组和仅是可选的组。我为此使用c#。

我的目标字符串看起来像这样

    ##my_first_string-2#E+1##
    ##my_second_string-2#E-2##
    ##my_third_string__##

我有以下要求

到目前为止,我想出了

(##.*?##)

=> 匹配 2 ## ## 之间的所有字符

(##)([A-Za-z\-])\w+(##)

=> 匹配第一个字符串。但由于某种原因,这捕获了##my_first_string-2而不仅仅是 my_first_string-2

你能帮我为我的要求创建一个正则表达式吗?

标签: c#regex

解决方案


尝试这个:

##([^#]+?)(#E[+-][0-9]+)?##

重要的部分是:

(#E[+-][0-9]+)?

这 ”?” 量词指定零次或一次出现

将以下内容替换为字符串的字符要求,目前它只是“除 # 之外的所有内容”

([^#]+?)

希望这可以帮助。


推荐阅读