0

我尝试先搜索 Stackoverflow,看看是否能找到解决我正在尝试使用正则表达式的方法,但我什至不知道如何问这个问题。事实上,我不确定我是否正确地表达了我的问题......

基本上我正在尝试做一个非常简单的正则表达式搜索和省略。

                <tr>
            <td><input type="checkbox" name="country" id="chkCountry" checked="1" disabled="1"></td>
            <td><label for="chkCountry">Country</label></td>
            <td><label for="chkCountry">UNITED STATES</label></td>
        </tr>

我想从这些标签之间解析出文本“UNITED STATES”,而无需获取文本“Country”:

<td><label for="chkCountry"></label></td>

我已经设置了我的正则表达式来匹配前缀和后缀,但使用表达式将它们从捕获中排除:

    (?<=<td><label for="chkCountry">).*?(?=</label></td>)

这将抓住我上面提到的两个词。我怎样才能制定这个表达式来只抓住“美国”?

文本“Country”是静态的并且会一直存在,但文本“UNITED STATES”总是不同的,用其他国家名称填充文本。所以基本上我想刮掉那里出现的国家。

我提前感谢您的帮助。

4

2 回答 2

0

<[^<]+?><-- 这是 html 标签正则表达式

所以,你只需要用(<[^<]+?>)|(Country)空字符串“”替换这个正则表达式,这会让你只剩下“美国”

于 2013-07-02T17:05:54.440 回答
0

如果您需要完全使用正则表达式执行此操作,请尝试使用负前瞻(?!)构造):

(?<=<td><label for="chkCountry">)(?!Country).*?(?=</label></td>)

(?!Country)- 这是一个消极的前瞻。像所有前瞻和后瞻一样,它是一个零宽度断言,这意味着它匹配字符之间的位置而不是字符本身的模式。

所以这匹配“字符串中没有被”跟随的位置Country。正则表达式引擎必须提前确定这一点。

请注意,如果您有一个名为 的国家/地区CountryTown,则它不会被完整的正则表达式匹配,因为负前瞻将失败。

于 2013-07-02T17:11:46.670 回答