使用正则表达式替换而不是字符串替换

本文关键字:替换 字符串 正则表达式 | 更新日期: 2023-09-27 18:02:22

我不太了解Regex,所以这个问题看起来很傻。

我用.Split(' ')把一个string分成一个string[]
目的是检查单词,或替换任何。

我现在遇到的问题是,对于要替换的单词,它必须是完全匹配的,但是用我分割它的方式,可能有一个([与分割的单词。

到目前为止,为了解决这个问题,我使用了这样的代码:
formattedText.Replace(">", "> ").Replace("<", " <").Split(' ') .

现在可以正常工作,但我想合并更多特殊字符,如[;''/:*?'"<>|&']

是否有比我替换的方法更快的方法,如Regex?我有一种感觉,我的路线远不是最好的答案。

编辑
This is an (example) string
将被替换为
This is an ( example ) string

使用正则表达式替换而不是字符串替换

如果您想替换整个单词,可以使用像这样的正则表达式。

string text = "This is an example (example) noexample";
string newText = Regex.Replace(text, @"'bexample'b", "!foo!");

newText将包含"This an !foo! (!foo!) noexample"

这里的关键是'b是断行元字符。因此,它将匹配一行的开头或结尾,以及单词字符('w)和非单词字符('w)之间的转换。它与使用'w或'w之间最大的区别是它们不会在行首或行尾匹配。

我想这就是你想要的东西

如果你想要这些

-> ;'/:*?"& lt;> |,"符号替换

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 + " ";
        });