私はC#でWinFormsでNET 2.0を使用しています。私は正規表現に大きな問題を抱えています。私は単純な文字列で4つ以上の文字の単語にコロンを追加しようとしています。コロンを一度追加するだけです。それ以降、コードはそれ以上追加されません。C#regex - 文字列に一致しません
Regex lbls = new Regex(@"^\s*(?<lbl>[A-Za-z0-9_]{4,})", RegexOptions.Multiline); // Use a regex to obtain all 4 letter words in string
MatchCollection matches = lbls.Matches(text); // text is my string
foreach (Match m in matches)
{
string mm = m.Groups["lbl"].Value; // Matches are stored in this group.
if (!Regex.IsMatch(text, @"^\s*\b" + mm + @":\b", RegexOptions.Multiline))
{
text = Regex.Replace(text, @"\b" + mm + @"\b", mm + ":", RegexOptions.Multiline);
}
}
文字列が「テスト」であるとします。つまり、出力は「TEST:」でなければなりません。しかし、コードがもう一度実行されると、テキストは "TEST:"のままでなければなりませんが、代わりに "TEST ::"になります。コロンが追加され続ける。どうしてこれなの?私のifステートメントが完全に正しいように見えます。
はい、私は混乱しています。問題はどこだ?また、 "TEST"ではなく、最初の反復で "TEST:"という値を検索しませんか?検索にもコロンがあります。 – david
あなたのコメントに答えるために私の答えを更新しました。私はあなたのIFステートメントのコロンを動かすと、あなたが必要なものを手に入れることができると信じています。 –
ええ、それはそれを修正し、私は今問題を見る。私は次のように置いた:外側の代わりに、単語の境界内に、ばかげた間違い。それを指摘してくれてありがとう。 – david