這工作對我來說:
>>> haystack = """--c5eda821-H-
Message: Warning. Match of "eq 1" against "&ARGS:CSRF_TOKEN" required. [file "/usr/share/modsecurity-crs/optional_rules/modsecurity_crs_43_csrf_protection.conf"] [line "31"] [id "981143"] [msg "CSRF Attack Detected - Missing CSRF Token."]
Message: Warning. Pattern match "(.*?)=(?i)(?!.*httponly.*)(.*$)" at RESPONSE_HEADERS:Set-Cookie. [file "/usr/share/modsecurity-crs/optional_rules/modsecurity_crs_55_application_defects.conf"] [line "83"] [id "981184"] [msg "AppDefect: Missing HttpOnly Cookie Flag for auth."] [tag "WASCTC/WASC-15"] [tag "MISCONFIGURATION"] [tag "http://websecuritytool.codeplex.com/wikipage?title=Checks#cookie-not-setting-httponly-flag"]
Apache-Handler: application/x-httpd-php
Stopwatch: 1501247328778702 7722 (- - -)
Stopwatch2: 1501247328778702 7722; combined=2901, p1=886, p2=1609, p3=54, p4=87, p5=213, sr=309, sw=52, l=0, gc=0
Response-Body-Transformed: Dechunked
Producer: ModSecurity for Apache/2.7.7 (http://www.modsecurity.org/);
OWASP_CRS/2.2.8.
Server: Apache
WebApp-Info: "default" "59EFAF5D261B7D5BE14460C1BF3EE0A9" ""
Engine-Mode: "DETECTION_ONLY"
--c5eda821-Z--"""
>>> print(re.search(r'--[\da-e]{8}-\w-(.+?)--[\da-e]{8}-\w--$', haystack, re.M|re.DOTALL).group(1))
Message: Warning. Match of "eq 1" against "&ARGS:CSRF_TOKEN" required. [file "/usr/share/modsecurity-crs/optional_rules/modsecurity_crs_43_csrf_protection.conf"] [line "31"] [id "981143"] [msg "CSRF Attack Detected - Missing CSRF Token."]
Message: Warning. Pattern match "(.*?)=(?i)(?!.*httponly.*)(.*$)" at RESPONSE_HEADERS:Set-Cookie. [file "/usr/share/modsecurity-crs/optional_rules/modsecurity_crs_55_application_defects.conf"] [line "83"] [id "981184"] [msg "AppDefect: Missing HttpOnly Cookie Flag for auth."] [tag "WASCTC/WASC-15"] [tag "MISCONFIGURATION"] [tag
"http://websecuritytool.codeplex.com/wikipage?title=Checks#cookie-not-setting-httponly-flag"]
Apache-Handler: application/x-httpd-php
Stopwatch: 1501247328778702 7722 (- - -)
Stopwatch2: 1501247328778702 7722; combined=2901, p1=886, p2=1609, p3=54, p4=87, p5=213, sr=309, sw=52, l=0, gc=0
Response-Body-Transformed: Dechunked
Producer: ModSecurity for Apache/2.7.7 (http://www.modsecurity.org/);
OWASP_CRS/2.2.8.
Server: Apache
WebApp-Info: "default" "59EFAF5D261B7D5BE14460C1BF3EE0A9" ""
Engine-Mode: "DETECTION_ONLY"
您所描述的錯誤消息,是因爲當沒有比賽,re.search
retur ns None
和None
沒有groups
屬性。
我爲了防止這種情況的例外,您應該測試從方法的返回值,以檢查是否有任何匹配:
regex = re.compile(r'--[\da-e]{8}-\w-(.+?)--[\da-e]{8}-\w--$', re.M|re.DOTALL)
match = regex.search(haystack)
if match:
print match.group(1)
else:
print "No match"
[更新]
Yeah you are right in case of one only long string, I have many more in the same fashion. But, i only want the content between those tags. – dumbo
試試這個:
>>> regex = re.compile(r'--[\da-e]{8}-\w--(.+?)--[\da-e]{8}-\w--', re.M|re.DOTALL)
>>> for i, match in enumerate(regex.findall(haystack)):
... print('{:02d}-> {}...'.format(i, match[:15].strip()))
00-> HTTP/1.1 200 O...
01-> Message: Warni...
findall
方法將返回匹配列表。如果你只想要最後一場比賽:
>>> matches = regex.findall(haystack)
>>> print(matches[-1])
或者只是第二個:
>>> print(matches[1])
什麼問題? – revo
我收到一個錯誤'AttributeError:'NoneType'對象沒有屬性'groups'' – dumbo
可能的dup? https://stackoverflow.com/questions/15232832/python-regex-attributeerror-nonetype-object-has-no-attribute-groups – revo