C# 如何使用下面的正则表达式创建模式?

C# 如何使用下面的正则表达式创建模式?,c#,.net,regex,C#,.net,Regex,我想做一个图案 例如,我的输入是 string str = "15-16-00-014716 AND15- [ ] (5) Description of 16-00-014715"; 预期产量为 15-16-00-014716 AND15-16-00-014715 我尝试了以下正则表达式: Regex.Replace(YourString, @"\s+\[.*(?=\b\d+)",""); 但结果是 15-16-00-014716 AND15-0-014715 你可以用 Regex.R

我想做一个图案

例如,我的输入是

string str = "15-16-00-014716 AND15- [  ] (5) Description of 16-00-014715";
预期产量为

15-16-00-014716 AND15-16-00-014715
我尝试了以下正则表达式:

Regex.Replace(YourString, @"\s+\[.*(?=\b\d+)","");
但结果是

15-16-00-014716 AND15-0-014715
你可以用

Regex.Replace(str, @"\s+\[.*?(?=\b\d+(?:-|$))", "")
请参阅和

正则表达式图:

要点:

  • *
    应该是非贪婪的(
    *?
    匹配尽可能少的字符)
  • (?:-|$)
    匹配
    -
    字符或字符串结尾位置

试试
(?s)\s+\[.*\n(?=\d)
模式。这里的规则是什么,顺便问一下?为什么您的模式是这样的?可能是
\s+\[.*\n.*\n
\s+\[(?:.\n){2}
昨天有人问了一个类似的问题。同样在你当前的帖子中,你可以使用这个正则表达式,或者如果你解释了规则,我认为可能会建议一个更好的解决方案。为什么使用正则表达式?@PushpeshKumarRajwanshi实际上,我想要一个正则表达式来处理下面两个字符串,因为你提供了一个解决方案,但它可以处理2个数字字符串,而不是1个数字字符串.1.“14-03-002980和14-03-[](5)002981的说明”2.“15-16-00-014716和15-[](5)16-00-014715“@DhavalPatel的说明好的,
\s+\[(?:.*\n){2}
对您有用吗?请参阅。它删除了以空格开头的子字符串,
[
,这一行的其余部分和下一行。由于OP没有明确指定规则,您可以将正则表达式简化为@PushpeshKumarRajwanshi,或者(如果在最后一个数字子字符串之前必须使用空格)
\s+\[.*\s(?=\s+$)
,这将更快。