为什么这个python正则表达式语句不能返回我的viewstate信息?

时间:2011-03-09 02:25:39

标签: python regex

def ExtractViewState(string):
    m = re.match("__viewstate[^>]+value=\"\(\?<Value>[^\"]*\)", string, re.IGNORECASE)
    return m.group(0)

我想我错过了一些东西,但它一直没有回复。 Blagh。

更新:

<input type="hidden" name="__VIEWSTATE" value="5vzj+3s4pEHFJUQoOJbZicZdf+k2bi0uiXeIxMNTxjocu0FLzTXEI8pEcQy/V4r1vtIP6G/E0/j0C5TwvhaWdW1wJVGwGKfO26gvQk9O0zsxy5NBpx+PlfL5h7nlnAp+GmAIwdjLWxRFFbhxaOfH+yZQKfkzshBvE7xogxrTnrrlF22BiENHdWHuMqeGYb4AUfvbbJ2psQOwTTOF6meAjszLtaAxBVTgun4gVsGOKUDqasgzyYn7AsxsJ4rJ3S/64YU2sUwAsvCD1d0X3Q8bGiwriRU/pAo31xn4SfhP8dk22QbhFbVpvIwl3WGTxohL" />

应该只在value属性中返回文本:

“5vzj + 3s4pEHFJUQoOJbZicZdf + k2bi0uiXeIxMNTxjocu0FLzTXEI8pEcQy / V4r1vtIP6G / E0 / j0C5TwvhaWdW1wJVGwGKfO26gvQk9O0zsxy5NBpx + PlfL5h7nlnAp + GmAIwdjLWxRFFbhxaOfH + yZQKfkzshBvE7xogxrTnrrlF22BiENHdWHuMqeGYb4AUfvbbJ2psQOwTTOF6meAjszLtaAxBVTgun4gVsGOKUDqasgzyYn7AsxsJ4rJ3S / 64YU2sUwAsvCD1d0X3Q8bGiwriRU / pAo31xn4SfhP8dk22QbhFbVpvIwl3WGTxohL”

2 个答案:

答案 0 :(得分:2)

你有几个问题:

import re
def ExtractViewState(string):
    # re.match looks only at the **beginning** of the string
    # dont escape the `( .. )` those capture the group
    m = re.search("__viewstate[^>]+value=\"([^\"]*)", string, re.IGNORECASE)
    # group(0) is the whole match, you want the 1st capture group
    return m.group(1)

答案 1 :(得分:0)

三个问题。

  1. 您需要re.search,而不是re.match

  2. 您需要(?P<...>),而不仅仅是(?<...>)

  3. 你有更多的反斜杠。

    re.search("__viewstate[^>]+value=\"(?P<Value>[^\"]*)", s, re.IGNORECASE)

  4. 适合我。