【发布时间】:2010-10-14 08:00:22
【问题描述】:
我正在使用 ASP.NET,需要使用用户键入的字符串进行管理,以便提取一些信息。用户输入一个普通的文本、单词和数字,但有时他可能会在 MATHML 中键入一个数学表达式,这些表达式总是一个被标记包围的 xml 字符串。 我想从输入的文本中提取每个数学段。 例如,假设用户输入了以下文本:
string input = "My name is Dorry and here is a math expression: <math>---some math1---</math> ah, there is another expression: <math>---some math2---</math> and do not forget this too <math>---some math3---</math>.".
嗯,我想出的第一个正则表达式解决方案是这样的:
string pattern1 = @"\<math(.+)\<\/math\>";
为了得到匹配,我显然会使用:
Regex r = new Regex(pattern1, RegexOptions.IgnoreCase);
string[] res = r.Matches(input);
它似乎工作,太糟糕了,它不是因为这个表达式,而不是让我一个数组(使用 Reges.Matches)填充三个字符串(“---some math1---”,“---一些数学2---", "---一些数学3---");它给我一个只有一个元素的数组:“---some math1--- 啊,还有另一个表达式:---some math2--- 不要忘记这个---some math3---”。你知道吗?它需要第一个和最后一个,并在中间合并所有内容,而不关心其他一些元素!
好吧,我想这是关于正则表达式的一个众所周知的问题;有解决办法吗?如何告诉正则表达式引擎更...意识?
非常感谢您。
【问题讨论】:
-
用正则表达式解析 XML?很痛:stackoverflow.com/questions/1732348/…
-
是的,你是对的,但在这里我没有一个格式良好的 xml 树,在这里我必须使用由一些 xml 段组成的混合结构来管理,这些 xml 段像盐和胡椒一样分布在整个地方......
标签: .net asp.net regex pattern-matching