正则表达和删除标志

时间:2013-10-25 20:34:33

标签: c# regex

我是正则表达式的新手。我有一点问题,我找不到答案。我正在寻找使用这种常规表达式的冗余括号:

public Regex RedundantBrackets = new Regex("[(](\\s?)[a-z](\\s?)[)]");

当我以这种方式找到我想要modife字符串的东西时:

text1 (text2) text3 => text1 text2 text3 - 所以你可以只想删除括号。我怎样才能做到这一点?我试图使用替换方法,但使用它我只能替换"(text2)"的所有符号。

提前致谢!

3 个答案:

答案 0 :(得分:1)

尝试此替换

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

/* result: text1 text2 text3*/

解释

正则表达式替换查找整个字符串以查找匹配项。如果找到匹配项,则会替换该项。所以我们的匹配模式看起来像([()])。这意味着这个

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

    当我们在您的文本上运行正则表达式替换时,它会找到两个匹配( text2,最后匹配text2 )。这些被替换为string.empty。

答案 1 :(得分:0)

首先,使用逐字字符串非常方便,因此您不必转义斜杠等。

public Regex RedundantBrackets = new Regex(@"[(]\s?([a-z]+)\s?[)]");

我们希望将[a-z]括在括号中,因为这是我们想要捕获的内容。然后我们可以使用$1将该捕获放入替换

RedundantBrackets.Replace("text (text) text", "$1");
编辑:我忘记将重复添加到[a-z] => [a-z]+

答案 2 :(得分:0)

这将删除所有使用正则表达式的字符

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