正则表达式,仅修剪句子中的最后一个 ()

本文关键字:最后一个 句子 修剪 正则表达式 | 更新日期: 2023-09-27 17:56:31

我很难弄清楚正则表达式。我有句子:"1A11 - 车辆发动机控制单元 (VECU)(板后)"1A1K5 - 车辆后视图(前视图)"我想从 (----) 中修剪我的句子,我有这个正则表达式来这样做"@"''s*([^)]*)",但这个问题的问题是,就像我的第一句话一样,(VECU) 是缩写,所以我需要保留它。但是如果我有 2 () () (),这个正则表达式不起作用。如何修改我的正则表达式 2 仅修剪句子中的最后一个 ()?

 if (!reportMode)
 {
     //Look line by line for Title                               
     stream = GetStream(files);
     List<String> fileContent = new List<String>();
     using (StreamReader sr = new StreamReader(stream))
     {
        String line = "";
        Boolean isInThere = false;
        while (!sr.EndOfStream)
        {
           line = sr.ReadLine();
           if (line.Contains(title))
           {
              //check for exact match
              Int32 index = line.IndexOf(" - ");
              String revisedLine = line.Substring(index + 3).Trim();
              String str = Regex.Replace(revisedLine, @"'s*'([^')]*')", "").Trim();
              if (Regex.IsMatch(str, String.Format("^{0}$", title)))
                  isInThere = true;
           }
           fileContent.Add(line);
      }

正则表达式,仅修剪句子中的最后一个 ()

您可以将正则表达式锚定在行尾。这通常是在末尾添加一个"$"符号:"''s*''([^'')]*'')$"。如果右括号是字符串的最后一个字符,则应执行此操作。否则,您可以添加表达式以忽略空格。

(修复了正则表达式语法,谢谢帕特里克)

--最大P

如果您需要删除最后一个但不仅可以出现在末尾的括号表达式,您可以使用

Regex rx = new Regex(@"'s*'([^()]*')(?=[^()]*$)");
String str = rx.Replace(revisedLine, "").Trim();

正则表达式:

  • 's* - 0 个或多个空格符号
  • '([^()]*') - 圆括号后跟除 )( 以外的任意数量的字符
  • (?=[^()]*$) - 检查在字符串末尾之前是否没有()符号的前瞻。

请注意,您不需要转义字符类中的圆括号。