2

私は正規表現について十分に理解されていないので、これはばかげた質問のように思えるかもしれません。

私はstringastring[]をwithに分割してい.Split(' ')ます。
目的は、単語を確認するか、単語を置き換えることです。

私が今抱えている問題は、単語を置き換えるには、完全に一致(する必要があるということですが、分割する方法では、または[分割された単語がある可能性があります。

これまでのところ、これに対抗するために、私は次のようなものを使用しています
formattedText.Replace(">", "> ").Replace("<", " <").Split(' ')

これは今のところ問題なく機能しますが、などのより特別な文字を組み込みたいと思い[;\\/:*?\"<>|&']ます。

正規表現など、置換する方法よりも迅速な方法はありますか?自分のルートがベストアンサーとは程遠い気がします。

EDIT
This is an (example) string
はに置き換えられます
This is an ( example ) string

4

2 に答える 2

4

単語全体を置き換えたい場合は、次のような正規表現で行うことができます。

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 を使用することの最大の違いは、それらが行頭または行末で一致しないことです。

于 2013-06-20T22:07:23.393 に答える
0

私はこれがあなたが望む正しいことだと思います

これらが必要な場合 -> ;\/:*?"<>|&' 記号を置き換える

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 + " ";
        });
于 2013-03-05T10:06:01.733 に答える