正则表达式替换字符串
我尝试使用.NET正则表达式替换字符串
元素 - 没有运气:)正则表达式替换字符串
假设以下字符串:
AA A C D A Some Text here
规则
- 在行
- 的开始,不要更换只做取代单出现
- 如果空间之前或之后并没有取代它(可选)
从上述期望的结果是(#作为替换字符):
AA#A C#D A#Some Text here
这应包括您的要求的所有3。请原谅格式化;我必须重新选择
的前几行才能正确显示。
string pattern = @"(?<!^| )((?<!\s) (?!\s))(?!\1)";
string[] inputs = { " AA A C D A Some Text here", // original
" AA A C D A Some Text here" // space before/after
};
foreach (string input in inputs)
{
string result = Regex.Replace(input, pattern, "#");
Console.WriteLine("Original: {0}\nResult: {1}", input, result);
}
输出:
Original: AA A C D A Some Text here
Result: AA#A C#D A#Some Text here
Original: AA A C D A Some Text here
Result: AA#A C#D A Some Text here
我不熟悉C#的特定的正则表达式的味道,但在Perl/PHP样式这个工作对我来说:
s/(?<!\A| | ) (?! |)/#/g
该R负面lookbehead,负面看法和\ A =输入转义序列的开始。
会(有一些修改)工作 - 谢谢。 我选择Ahmads答案,因为它解决了整个问题。 – ManniAT 2009-09-15 11:03:25
你可以使用这个
[^^\s(nbsp;)](nbsp;)[^$\s(nbsp;)]
非常感谢。下次我会简单地给你发送我的消息来修复:) 优秀的例子!!! – ManniAT 2009-09-15 11:04:12