正则表达式和删除符号
本文关键字:符号 删除 正则表达式 | 更新日期: 2023-09-27 18:36:58
我是正则表达式的新手。我有一个小问题,我找不到答案。我正在寻找使用这种常规压制的冗余括号:
public Regex RedundantBrackets = new Regex("[(](''s?)[a-z](''s?)[)]");
当我找到我想以这种方式修改字符串的内容时:
text1 (text2) text3 => text1 text2 text3
- 所以你可以 se 我只想删除括号。我该怎么做?我试图使用替换方法,但使用它我只能替换"(text2)"
的每一个迹象。
提前感谢!
试试这个替换
Regex.Replace("text1 (text2) text3", // Input
@"([()])", // Pattern to match
string.Empty) // Item to replace
/* result: text1 text2 text3*/
解释
正则表达式替换在整个字符串中查找匹配项。如果找到匹配项,它将替换该项。所以我们的匹配模式看起来像这样([()])
。这意味着这个
-
(
是模式中开始比赛所需的内容,并且需要结束)
否则匹配模式不平衡。 -
[]
模式中说,我正在寻找一个字符,[
和]
定义一个集合。它们被视为固定匹配。最常见的是 [A-Z],它是任何一组字符,以 A 开头并以 Z 结尾。我们将定义我们自己的集合。*请记住 [ 和 ] 表示正则表达式,我们正在寻找 1 个字符,但我们在其中指定了一组许多字符。 -
(
和)
在我们的集合[()]
也可以指定为[)(]
,这意味着我们有一组两个字符。这两个字符是左括号和右括号()
。
因此,综上所述,我们希望匹配集合(2)中的任何字符(2),即(或a)。找到该匹配项后,将 ( 或 ) 替换为 string.empty。
当我们对您的文本运行正则表达式替换时,它会找到两个匹配(
text2 和最后匹配文本 2 )
。这些被替换为string.empty。
首先,使用逐字字符串可能很方便,这样您就不必转义斜杠等。
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 ]", ");