2

これから、等号(等号なし)の左側にあるものをキャプチャしようとしています。

MSG_TYPE=X12S4F3S3\r\nASID=123456789012\r\n

私は使用(\w*)=しましたが、これは同等のものと普及しているものを拾うようnです/n

これはのため.netです。

申し訳ありませんが、テキストがRTFドキュメント内に含まれていることを忘れてしまったため、DocumentRangesからCharacterPropertiesを作成しようとしているため、基本的なサブストリング関数は使用できません。

Regex regEx = new Regex (@"(\w*)=");
DocumentRange [] docRanges = m_rtfTranslation.Document.FindAll (regEx);

for (int nIndex = 0; nIndex < docRanges.Length; nIndex++)
{
    CharacterProperties cp = m_rtfTranslation.Document.BeginUpdateCharacters (docRanges [nIndex]);
    cp.ForeColor = Color.SlateBlue;
    m_rtfTranslation.Document.EndUpdateCharacters (cp);
}
4

2 に答える 2

6

これには本当に正規表現が必要ですか?単純な部分文字列が機能します。

var lhs = msg.Substring(0, msg.IndexOf("=")) // MSG_TYPE

一致またはキャプチャする必要がある場合:

var lhs = Regex.Match(msg, @"(.*)=");
Console.WriteLine(lhs.Groups[1].Value);

の左側を置き換える正規表現が必要な場合=:

var lhs = Regex.Replace(msg, @"(.*)=", "<green>$1</green>");
Console.WriteLine(lhs);

収量:

<green>MSG_TYPE</green>X12S4F3S3\r\n<green>ASID</green>123456789012\r\n
于 2012-05-30T08:40:48.840 に答える
0
MessageBox.Show(Regex.Replace(
    @"MSG_TYPE=X12S4F3S3\r\nASID=123456789012\r\n",
    @"([^=]+)(=.*?\\r\\n)",
    @"[color]$1[/color]$2"
));
于 2012-05-30T08:52:42.983 に答える