我是正则表达式的新手。我有一点问题,我找不到答案。我正在寻找使用这种常规表达式的冗余括号:
public Regex RedundantBrackets = new Regex("[(](\\s?)[a-z](\\s?)[)]");
当我以这种方式找到我想要modife字符串的东西时:
text1 (text2) text3 => text1 text2 text3
- 所以你可以只想删除括号。我怎样才能做到这一点?我试图使用替换方法,但使用它我只能替换"(text2)"
的所有符号。
提前致谢!
答案 0 :(得分:1)
尝试此替换
Regex.Replace("text1 (text2) text3", // Input
@"([()])", // Pattern to match
string.Empty) // Item to replace
/* result: text1 text2 text3*/
正则表达式替换查找整个字符串以查找匹配项。如果找到匹配项,则会替换该项。所以我们的匹配模式看起来像([()])
。这意味着这个
(
是模式中开始匹配所需的,需要关闭)
,否则匹配模式不平衡。[]
表示,我正在搜索字符,而[
和]
定义了一个字符集。他们被认为是设定的比赛。最常见的是[A-Z],它是任何字符集,以A开头,以Z结尾。我们将定义自己的集合。 *请记住[和]对正则表达式的意思是我们正在寻找 1 字符,但我们在其中指定了一组很多字符。(
中的)
和[()]
也可以指定为[)(]
()
。
醇>
总而言之,我们希望匹配(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]”,“”);