用于匹配简单方括号 (C#) 的正则表达式

本文关键字:正则表达式 方括号 简单 用于 | 更新日期: 2023-09-27 18:35:33

我想知道一个正则表达式来检测以下内容(特别是对于 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))

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

谢谢

用于匹配简单方括号 (C#) 的正则表达式

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

您可以使用

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

请参阅正则表达式演示(忽略'r?,它仅用于演示)。

正则表达式匹配

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

C# 演示:

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

我认为这就是您要查找的: ([^()])''s$

''s* 表示字符串的末尾在右括号后可能有零个或多个空格字符。