gpt4 book ai didi

python - 使用正则表达式解析 Apache 日志

转载 作者:太空宇宙 更新时间:2023-11-04 05:00:38 24 4
gpt4 key购买 nike

我想得到以下内容:-

输入

GET /1.1/friendships/list.json?user_id=123 HTTP/1.1
GET /1.1/friendships/list.json HTTP/1.1
GET /1.1/users/show.json?include_entities=1&user_id=321 HTTP/1.1
GET /1.1/friendships/list.json?user_id=234 HTTP/1.1
GET /1.1/friendships/create.json HTTP/1.1

输出

/1.1/friendships/list.json
/1.1/friendships/list.json
/1.1/users/show.json
/1.1/friendships/list.json
/1.1/friendships/create.json

我一直能够匹配到问号字符。我想匹配一个问号或空格的字符。这是我目前所拥有的。

([A-Z])+ (\S)+[\?]

最佳答案

以下表达式接受GETPOST:

^(?:GET|POST)\s+([^?\n\r]+).*$

分解,这说

^               # start of line
(?:GET|POST)\s+ # GET or POST literally, at least one whitespace
([^?\s]+) # not a question mark nor whitespace characters
.* # 0+ chars afterwards
$ # end of line

这需要替换为\1,参见a demo on regex101.com并注意 MULTILINE 标志。


Python 中,这将是:

import re

string = """
GET /1.1/friendships/list.json?user_id=123 HTTP/1.1
GET /1.1/friendships/list.json HTTP/1.1
GET /1.1/users/show.json?include_entities=1&user_id=321 HTTP/1.1
GET /1.1/friendships/list.json?user_id=234 HTTP/1.1
GET /1.1/friendships/create.json HTTP/1.1
POST /some/other/url/here
"""

rx = re.compile(r'^(?:GET|POST)\s+([^?\s]+).*$', re.M)
matches = rx.findall(string)
print(matches)
# ['/1.1/friendships/list.json', '/1.1/friendships/list.json', '/1.1/users/show.json', '/1.1/friendships/list.json', '/1.1/friendships/create.json', '/some/other/url/here']

关于python - 使用正则表达式解析 Apache 日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45830435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com