我没有像我应该的那样对正则表达式嗤之以鼻,所以这看起来像是一个愚蠢的问题。
我正在string
将string[]
分成.Split(' ')
。{
目的是检查单词,或替换任何单词。
我现在遇到的问题是,对于要替换的单词,它必须是完全匹配,但是按照我分割它的方式,可能会有{ {1}}或(
包含拆分字。
到目前为止,为了解决这个问题,我正在使用这样的东西:
[
。
现在这种方法很好用,但我想加入更多特殊字符,例如formattedText.Replace(">", "> ").Replace("<", " <").Split(' ')
。
有没有比我更换方法更快的方法,比如Regex?我有一种感觉,我的路线远非最佳答案。
修改
[;\\/:*?\"<>|&']
将被替换为
This is an (example) string
答案 0 :(得分:4)
如果要替换整个单词,可以使用这样的正则表达式来完成。
string text = "This is an example (example) noexample";
string newText = Regex.Replace(text, @"\bexample\b", "!foo!");
newText
将包含"This an !foo! (!foo!) noexample"
这里的关键是\b
是单词break字符。因此它将匹配行的开头或结尾,以及单词字符(\ w)和非单词字符(\ W)之间的转换。它与使用\ w或\ W之间的最大区别在于它们在行的开头或结尾处不匹配。
答案 1 :(得分:0)
我认为这是你想要的正确的事情
如果你想要这些 - &gt; ?; \ /:*“&LT;&GT; |&安培;”要替换的符号
string input = "(exam;\\/:*?\"<>|&'ple)";
Regex reg = new Regex("[;\\/:*?\"<>|&']");
string result = reg.Replace(input, delegate(Match m)
{
return " " + m.Value + " ";
});
如果要替换除a-zA-Z0-9 _
之外的所有字符 string input = "(example)";
Regex reg = new Regex(@"\W");
string result = reg.Replace(input, delegate(Match m)
{
return " " + m.Value + " ";
});