Py学习  »  Python

python中的字符串regex

Payal • 5 年前 • 1539 次点击  

我有以下字符串:

"GET /phpmyadmin HTTP/1.1"

我想要python中的regex,它可以分离get、phpmyadmin、http和1.1,比如method、localhost、protocol和version。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/39927
 
1539 次点击  
文章 [ 3 ]  |  最新文章 5 年前
Pushpesh Kumar Rajwanshi
Reply   •   1 楼
Pushpesh Kumar Rajwanshi    6 年前

用regex做,你可以用 [ /]+

相同的python代码是,

import re
s = 'GET /phpmyadmin HTTP/1.1'
tokens = re.split('[ /]+',s)
print(tokens)

输出如下:

['GET', 'phpmyadmin', 'HTTP', '1.1']
lieblos
Reply   •   2 楼
lieblos    6 年前

只要结构总是一样的,这样的东西应该可以正常工作。

s = "GET /phpmyadmin HTTP/1.1"
matches = re.match( r'(.*) (.*) (.*)/(.*)', s, re.M|re.I)
ans = list(matches.groups())

阅读regex可能会有所帮助: https://www.tutorialspoint.com/python/python_reg_expressions.htm .

编辑:我同意上面的说法,你不同意 需要 一个正则表达式,但它比拆分和列表理解更漂亮。

Austin
Reply   •   3 楼
Austin    6 年前

你不需要正则表达式。基于分隔符拆分字符串并提取要分配给所需变量的项:

s = "GET /phpmyadmin HTTP/1.1"

method, [localhost, protocol], version = [(x.strip(), y.split(), z) for x, y, z in [s.split('/')]][0]


更具可读性的方式:
for x, y, z in [s.split('/')]:
    method = x.strip()
    localhost, protocol = y.split()
    version = z