正则表达式字符串,其中空格是可选的,修剪后仅跟 (.

本文关键字:修剪 字符串 空格 正则表达式 | 更新日期: 2024-10-31 01:49:46

假设我有

string abc = "and TRIM$ ( 000trim) and (trim000) and  (abctrim) and Trim(trima) and  TRIM (  abc  ) and trim( A) and 0trim"

我只希望将TRIM()函数更改为RTRIM(),并希望模式忽略空格(如果有),并在TRIM之后考虑(

我正在使用

Regex.Replace(abc, "(?i)([^A-Za-z0-9])TRIM([^A-Za-z0-9][(])", "$1RTRIM(");

上面代码的结果是

"和 RTRIM( (000trim) 和 (trim000) 和 (abctrim) 和 Trim(trimaa) 和 RTRIM( abc ) 和 trim( A) 和 0trim";

我想获得输出为

"和TRIM$(000trim)和(trim000)和(abctrim)和RTRIM(trimaa)和RTRIM(abc)和RTRIM(A)和0trim";

如何实现所需的输出?

正则表达式字符串,其中空格是可选的,修剪后仅跟 (.

使用这个:

Regex.Replace(text, @"'bTRIM(?='s*'()", "RTRIM", RegexOptions.IgnoreCase)

正则表达式匹配紧跟 0 个或多个空格(包括制表符)和左括号( trimRegexOptions.IgnoreCase是不言自明的...

编辑:添加一个(?<![$%]),使其忽略具有前导%$trim,如下所示:

Regex.Replace(text, @"'b(?<![$%])TRIM(?='s*'()", "RTRIM", RegexOptions.IgnoreCase)

你可以像这样做一个替换:

var input = @"and TRIM$ ( 000trim) and (trim000) and  (abctrim) and Trim(trima) and  TRIM (  abc  ) and trim( A) and 0trim";
var pattern = @"(?i)'btrim(?:'s+|)('([^)]+'))";
string res = Regex.Replace(input, pattern, "RTRIM$1");