C# 正则表达式与去符号
我对正则表达式一无所知。我有个小问题,找不到答案。我正在寻找使用此常规espression的多余括号:C# 正则表达式与去符号,c#,regex,C#,Regex,我对正则表达式一无所知。我有个小问题,找不到答案。我正在寻找使用此常规espression的多余括号: public Regex RedundantBrackets = new Regex("[(](\\s?)[a-z](\\s?)[)]"); 当我找到要以这种方式修改字符串的内容时: text1(text2)text3=>text1 text2 text3-因此,我只想删除括号。我该怎么做?我试图使用Replace方法,但使用它,我只能替换“(text2)的每个符号 提前谢谢 试试这个 Re
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字符,但我们在其中指定了一组多个字符(
和)
在我们的集合[()]
中,也可以指定为[)(]
也意味着我们有一组两个字符。这两个字符是开头括号和结尾括号(
)(
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字符,但我们在其中指定了一组多个字符(
和)
在我们的集合[()]
中,也可以指定为[)(]
也意味着我们有一组两个字符。这两个字符是开头括号和结尾括号(
)当我们在文本上运行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也许您应该阅读关于正则表达式的教程。这是一个非常基本的正则表达式,您应该了解。