正则表达式:如何捕获“=”左侧的文本

本文关键字:文本 何捕获 正则表达式 | 更新日期: 2023-09-27 18:35:48

>我试图从中捕获等号左侧(没有等号)的任何内容。

MSG_TYPE=X12S4F3S3'r'nASID=123456789012'r'n

我用过('w*)=但这似乎拿起了平等和普遍n /n

这是为了.net.

抱歉,忘了提到文本包含在 RTF 文档中,因此当我尝试从 DocumentRange 创建字符属性时,基本的子字符串函数是不可能的。

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

正则表达式:如何捕获“=”左侧的文本

你真的需要一个正则表达式吗?一个简单的子字符串就可以了:

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
MessageBox.Show(Regex.Replace(
    @"MSG_TYPE=X12S4F3S3'r'nASID=123456789012'r'n",
    @"([^=]+)(=.*?''r''n)",
    @"[color]$1[/color]$2"
));