如何使用c#修剪Regex中的空白区域

Evo*_*hie 1 c# regex

我有一个字符串,我使用RegEx将字符串替换为特定模式.基本上我想修剪命名组中的空白区域

对于Eg:

myString1: substringof('test',Name)
myString2: substringof(' test ',Name)
myString3: substringof('test ',Name)

Expected output: Name.Contains(\"test\")

myString4: substringof(' test test ',Name)
myString5: substringof(' test test',Name)
myString6: substringof('test test ',Name)  

Expected output: Name.Contains(\"test test\")
Run Code Online (Sandbox Code Playgroud)

码:

var replaceRegex = new Regex(substringof\\(\\s*'(?<text>[^']+'?[^']*)'\\s*,\\s*(?<pname>[\\w\\[\\]]+)\\s*\\)");
myString = replaceRegex.Replace(myString, "${pname}.Contains(\"${text}\")");
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.提前致谢!!

Han*_*ney 6

使用string.Trim,但如果你坚持正则表达式:

[^\s.*](?<pname>\w.*)[^\s.*]
Run Code Online (Sandbox Code Playgroud)

那不是空间,而是一个可以空间分隔的"字",而不是空间.

避免正则表达式的另一种有趣的方法,如果你想修剪BETWEEN单词的空间,将使用字符串拆分和连接:

var text = " name name "; // sample
var result = string.Join(" ", text.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries));
Run Code Online (Sandbox Code Playgroud)

  • 或者只使用`(?<= ^\s*)\ S.*?(?=\s*$)`.匹配将是修剪后的字符串. (2认同)