正则表达式,仅修剪句子中的最后一个 ()
本文关键字:最后一个 句子 修剪 正则表达式 | 更新日期: 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 个或多个空格符号 -
'([^()]*')
- 圆括号后跟除)
或(
以外的任意数量的字符 -
(?=[^()]*$)
- 检查在字符串末尾之前是否没有(
或)
符号的前瞻。
请注意,您不需要转义字符类中的圆括号。