正则表达式匹配简单括号(C#)

时间:2016-02-21 21:35:47

标签: c# regex

我想知道一个正则表达式来检测以下内容(特别是对于C#):

字符串是否以简单括号内的文本结尾。例如:

有些比赛:

this is a string (dsdfgfg)
this is a (string (123456)

以下是一些示例代码,用于检测字符串是否以简单括号结尾。

static void Main(string[] args)
{
    const string s = "this is a sentence (367662288)";
    var result = Regex.IsMatch(s, @"\)$");
    Console.WriteLine(result); // true
}

一些非匹配:

this is a string (fdf
this is a string (dsdfgfg) temp
this is a string (dsdfgfg))

顺便说一下,在关闭简单括号之后允许空格,但没有其他字符。

由于

2 个答案:

答案 0 :(得分:2)

@"\)$"仅匹配以)结尾的字符串。你也可以把它写成s.EndsWith(")"),你会得到相同的结果。

您可以使用

@"\([^()]*\)$"

请参阅regex demo(忽略\r?,仅用于演示。)

正则表达式匹配

  • \( - 一个开头圆括号
  • [^()]* - 除()
  • 以外的零个或多个字符
  • \) - 结束圆括号
  • $ - 字符串结束。

C# demo

using System;
using System.Text.RegularExpressions;
using System.IO;
public class Test
{
    private static readonly Regex rx = new Regex(@"\([^()]*\)$", RegexOptions.Compiled);
    public static void Main()
    {
        var strs = new string[] {"this is a string (dsdfgfg)","this is a (string (123456)",
            "this is a (string) (FF4455GG)","this is a string (fdf","this is a string (dsdfgfg) temp",
            "this is a string (dsdfgfg))"};
        foreach (var s in strs) 
        {
            Console.WriteLine(string.Format("{0}: {1}", s, rx.IsMatch(s).ToString()));
        }
    }
}

结果:

this is a string (dsdfgfg): True
this is a (string (123456): True
this is a (string) (FF4455GG): True
this is a string (fdf: False
this is a string (dsdfgfg) temp: False
this is a string (dsdfgfg)): False

答案 1 :(得分:0)

我认为这就是你要找的东西:([^()] )\ s $

\ s *表示在结束括号后,字符串的结尾可能有零个或多个空白字符。