当前位置: 首页 > 知识库问答 >
问题:

正则表达式强制组和可选组

秦宜修
2023-03-14

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

我的目标字符串如下所示

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

我有以下要求:

  • ##开头和结尾是强制性的(但这不一定是行的开头或结尾)
  • ##和#(或##)之间的字符串也是强制性的
  • E{数字}或E-{数字}是可选的

到目前为止我已经想出了

(##.*?##)

=

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

=

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

共有1个答案

吕宣
2023-03-14

试试这个:

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

重要的部分是:

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

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

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

([^#]+?)

希望这有帮助。

 类似资料:
  • 我使用这个正则表达式: 要匹配这样的字符串: 分为4组: 问:我如何使第一个组可选,使结果组是一个空字符串? 我想在每种情况下得到4组,如果可能的话。 这种情况下的输入字符串:(第一组后面没有下划线)

  • 当所有组都是可选的时,我在提取组时遇到了问题。 上下文(如果您愿意,可以跳到结尾):这是在将字符串与一堆正则表达式进行最佳匹配并查看哪个表达式具有最多组匹配的上下文中。 例如,我可能有一个潜在的格式; 但我希望用户打错字,或者不包含空格或其他东西。 所以我可以用绳子测试一下 并希望获得组 一个 光盘 1-1 G 而且,对于测试字符串 我想得到   DE   克 下面是我的正则表达式,用于匹配以下可

  • 我试图写一个正则表达式来匹配三个组,在三个组中,我希望有一个组是可选的。 正则表达式: 它匹配以下内容: 但是,不是在下面。 如何修改正则表达式,使其匹配两个组。如果第一条消息是三个组。 修复 测试 消息 如果是第二条消息,只有两组 < li >修复 < li >消息 消息

  • 我是一个完全的正则表达式新手,花了几个小时试图解决这个难题。我认为我必须使用某种可选的非捕获组或交替。 我想匹配以下字符串: > 诺伊尔电影 a von 1000 诺伊尔电影a von 1000 mit b 诺伊尔电影a von 1000 mit b und c 1000英镑的新电影 诺伊尔电影公司 诺伊尔电影a mit b und c 诺伊尔电影a mit b und c und 我的正则表达式

  • 我正在尝试匹配时间格式。时间可以用可选的小时、分钟和毫秒写入。唯一需要的值是秒。所以所有这些时间都写得正确,应该匹配。 我的正则表达式看起来像这样: 我希望每组对应正确的值。因此,组1应始终返回小时,组2应始终返回分钟,等等……我在Regex101中尝试了这一点,但正如您在这些结果中看到的,当没有小时时,组1总是优于组2。它与时间<code>11:12 如何确保每组始终对应正确的时间段?我可以以某

  • 我有3个正则表达式,但当模式匹配时执行相同的操作,所以我考虑将所有三个表达式合并为一个。我尝试了很多,但无法让“|”I.e”或“在我的正则表达式中工作 regex1:<代码>文本。替换(/([\u00A9-\u3299])/g,函数myFunction(x){…} regex2: regex3: 我试过这样做,但它不起作用regex: