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 回答