正则表达式强制和可选组

时间:2019-01-29 22:36:03

标签: c# regex

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

我的目标字符串如下

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

我有以下要求

  • ## 在行的开头和结尾都是必需的(但这不一定是行的开头或结尾)
  • ## (或 ## )之间的字符串也是必需的
  • E + {Numbers}或E- {Numbers}是可选的

到目前为止,我已经想到了

(##.*?##)

=>匹配2 ## ##

之间的所有字符
(##)([A-Za-z\-])\w+(##)

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

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

1 个答案:

答案 0 :(得分:3)

尝试一下:

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

重要的部分是:

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

“?”量词指定零或一出现

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

([^#]+?)

希望这会有所帮助。