我正在尝试提取与用户名相关联的数字。每个用户名旁边都有一个特定的值。
private void queryUsers() {
string browserText = webBrowser1.DocumentText;
Match match = Regex.Match(browserText, "(>pickles</a></td><td>).*(</td><td align=\"center\">)");
string id = match.ToString();
string clean_id = Regex.Replace(id, @"\D", "");
textBox1.AppendText(clean_id);
}
我正在搜索的文件格式如下......
<tr><td>17.</td><td>ab</td><td><a href="http://www.*****.com/s.php?id=500000">pickles</a></td><td>150,000</td><td align="center"></td></tr>
<tr><td>18.</td><td>cd</td><td><a href="http://www.*****.com/s.php?id=7245658">donuts</a></td><td>250</td><td align="center"></td></tr>
我期待结果为“150000”。然而事实并非如此,它从150000开始创造了一个巨大的数字,然后结合了所有其他数字。
我对正则表达式很不熟悉,但类似的解决方案对我来说也适用于其他领域。我忽略了一些简单的事情,还是有更好的方法来解决这个问题?
答案 0 :(得分:0)
。*是贪婪的并且将匹配所有角色,因此匹配将是一个巨大的多线匹配。你需要将数字描述为“数字,逗号,数字”而不是“0到数百万的任何字符”
所以而不是
.*
使用
([0-9]+,)?[0-9]+
或者其他什么。
或使用某种负向前瞻来确保你不会意外地匹配&lt;。此外,如果源材料是有效的xml或html,请使用xml或html解析器来解析它。