我正在尝试从此处捕获等号(没有等号)左侧的任何内容。
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);
}
答案 0 :(得分:5)
你真的需要一个正则表达式吗?一个简单的子字符串可以工作:
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
答案 1 :(得分:0)
MessageBox.Show(Regex.Replace(
@"MSG_TYPE=X12S4F3S3\r\nASID=123456789012\r\n",
@"([^=]+)(=.*?\\r\\n)",
@"[color]$1[/color]$2"
));