我想要最后一个 /th> 和 /tbody 之间的文本>



这就是我使用的方法

    output = System.Text.RegularExpressions.Regex.Replace(output, "(?s)/th>(.*?)</tbody>", "$1")

请注意,我使用(.*?)是因为我希望搜索不合理。那就是周围有几个。我想删除最后一次>上方的文本

这就是我得到的。

<!-- statistics_period -->

<input name="subForm" type="hidden" value="1">
<input name="hidTotal" type="hidden" value="886">
<div class="domlistframe">
<div class="divMainListingTable">
<table width="76%" align="left" class="mainListTable" cellspacing="0" cellpadding="3">
    <tbody><tr>
                                                                        <th nowrap="">&nbsp;<               
                                                        <th colspan="4">&nbsp;</th>

        <th id="sercol" nowrap="" colspan="11">Totals</th>

你看到了吗?那里有几个。

是的,我非常清楚用正则表达式解析html的可怕后果,这里描述了RegEx匹配除了XHTML自包含标记之外的开放标记。

不管怎样,我主要是在分析表。正在工作

注意:这里有一个更简单的问题,与上面的问题等效假设我有这样的文本

cow cow cow chicken cat cow cat dog hello bla.

说我想要cat dog hello。这是最后一头牛和布拉之间的文字。

它的正则表达式是什么?

请注意,我希望文本介于LASTcowbla之间。

cow.*bla

会给我完整的文本

cow.?*bla应该会给我想要的。然而,正如您从我使用的示例中看到的那样,它不起作用。

提示

试试模式:

.*cow((?!cow).*?)bla

对于CCD_ 3问题。

前导.*跳过所有内容,直到遇到最后一个cow为止

这只是部分答案。基本上,我通过使用hjpotter92使用的技术解决了这个问题。

我做的是

    output = System.Text.RegularExpressions.Regex.Replace(output, "(?s).*/th>(.*?)</tbody>", "$1")

因为第一个是贪婪的。它将自动匹配包含.*th>的最大字符串

还有一些问题。为什么我的原始代码不起作用?

我怀疑这与正则表达式从左到右的工作有关。同样,任何输入都可以。

我还要感谢htpotter告诉我regex中的补码运算符是什么

嗯。。。这个答案确实回答了我应该怎么做才能让它发挥作用的问题,现在它正在发挥作用。然而,这是基于另一个答案。我应该选择哪一个作为答案?

最新更新