C# 正则表达式与去符号

C# 正则表达式与去符号,c#,regex,C#,Regex,我对正则表达式一无所知。我有个小问题,找不到答案。我正在寻找使用此常规espression的多余括号: public Regex RedundantBrackets = new Regex("[(](\\s?)[a-z](\\s?)[)]"); 当我找到要以这种方式修改字符串的内容时: text1(text2)text3=>text1 text2 text3-因此,我只想删除括号。我该怎么做?我试图使用Replace方法,但使用它,我只能替换“(text2)的每个符号 提前谢谢 试试这个 Re

我对正则表达式一无所知。我有个小问题,找不到答案。我正在寻找使用此常规espression的多余括号:

public Regex RedundantBrackets = new Regex("[(](\\s?)[a-z](\\s?)[)]");
当我找到要以这种方式修改字符串的内容时:

text1(text2)text3=>text1 text2 text3
-因此,我只想删除括号。我该怎么做?我试图使用Replace方法,但使用它,我只能替换
“(text2)
的每个符号

提前谢谢

试试这个

Regex.Replace("text1 (text2) text3", // Input
              @"([()])",             // Pattern to match
              string.Empty)          // Item to replace

/* result: text1 text2 text3*/
解释 Regex replace在整个字符串中查找匹配项。如果找到匹配项,它将替换该项。所以我们的匹配模式看起来像这样
([()])
。也就是说

  • 是开始匹配所需的模式,需要结束
    否则匹配模式不平衡
  • 模式中的
    []
    表示,我正在搜索一个字符,然后
    [
    ]
    定义一个集合。他们被认为是成套比赛。最常见的是[A-Z],它是任何字符集,以A开头,以Z结尾。我们将定义自己的字符集*记住[and]对regex的意思我们正在寻找1字符,但我们在其中指定了一组多个字符
  • 在我们的集合
    [()]
    中,也可以指定为
    [)(]
    也意味着我们有一组两个字符。这两个字符是开头括号和结尾括号
  • 总之,我们希望匹配(1)集合(2)中的任何字符,即a(或a)。找到匹配项后,将(或)替换为string.empty

    当我们对您的文本运行regex replace时,它会找到两个匹配的
    text2,最后是匹配的text2
    。这些替换为string.empty。

    尝试此替换

    Regex.Replace("text1 (text2) text3", // Input
                  @"([()])",             // Pattern to match
                  string.Empty)          // Item to replace
    
    /* result: text1 text2 text3*/
    
    解释 Regex replace在整个字符串中查找匹配项。如果找到匹配项,它将替换该项。因此,我们的匹配模式类似于
    ([()])
    ,这意味着

  • 是开始匹配所需的模式,需要结束
    否则匹配模式不平衡
  • 模式中的
    []
    表示,我正在搜索一个字符,然后
    [
    ]
    定义一个集合。它们被视为集合匹配。最常见的是[a-Z],它是任何一组字符,以a开头,以Z结尾。我们将定义自己的集合。*记住[and]对于正则表达式,我们正在寻找1字符,但我们在其中指定了一组多个字符
  • 在我们的集合
    [()]
    中,也可以指定为
    [)(]
    也意味着我们有一组两个字符。这两个字符是开头括号和结尾括号
  • 总之,我们希望匹配(1)集合(2)中的任何字符,即a(或a)。找到匹配项后,将(或)替换为string.empty


    当我们在文本上运行regex replace时,它会找到两个匹配的
    text2,最后是匹配的text2
    。这些被替换为string.empty。

    首先,可以方便地使用逐字字符串,这样您就不必逃避斜杠等

    public Regex RedundantBrackets = new Regex(@"[(]\s?([a-z]+)\s?[)]");
    
    我们希望将
    [a-z]
    括在括号中,因为这正是我们试图捕获的内容。然后,我们可以使用
    $1
    将该捕获放入替换中

    RedundantBrackets.Replace("text (text) text", "$1");
    

    编辑:我忘了在
    [a-z]
    =>
    [a-z]+

    中添加重复。首先,使用逐字字符串非常方便,因此您不必逃避斜杠等

    public Regex RedundantBrackets = new Regex(@"[(]\s?([a-z]+)\s?[)]");
    
    我们希望将
    [a-z]
    括在括号中,因为这正是我们试图捕获的内容。然后,我们可以使用
    $1
    将该捕获放入替换中

    RedundantBrackets.Replace("text (text) text", "$1");
    

    编辑:我忘记添加重复到
    [a-z]
    =>
    [a-z]+
    这将使用正则表达式删除所有字符


    finalString=Regex.Replace(finalString,@“[^\w],”);

    这将删除使用Regex的所有字符


    finalString=Regex.Replace(finalString,@“[^\w]”,“”);

    您的正则表达式只允许在括号内包含一个字母。您需要
    [a-z]*?
    来匹配字母序列。是否所有的偏执都是多余的,还是有一些是多余的?这与Regex无关,但括号是[and],括号也是(或)和一个大括号是{或}。在本例中,专利论文中应该只有一个字母。所有专利论文都是多余的(当然,如果有“(“and”)”,这就是为什么我要用这种方式检查它)。不清楚什么是“多余的”在此上下文中是指。正则表达式只允许括号内有一个字母。您需要
    [a-z]*?
    来匹配字母序列。是否所有的偏执都是多余的,或者是否有一些是多余的?这与正则表达式无关,但括号是[和],括号是(或),大括号是{或}。在这个例子中,专利论文中应该只有一个字母。所有专利论文都是多余的(当然,如果有“(“and”)”,这就是为什么我要用这种方式检查)。不清楚什么是“多余的”在本上下文中的意思。@user2229474也许您应该阅读关于正则表达式的教程。这是一个非常基本的正则表达式,您应该了解。@user2229474也许您应该阅读关于正则表达式的教程。这是一个非常基本的正则表达式,您应该了解。