正则表达式 - 如何使行的结尾可选

时间:2014-09-11 21:49:35

标签: python regex url expression

我正在编写一个URL解析器来获取一些值以便执行一些统计。 例如,我只想解析用户名:

uSSer=andoni&password=contra

(我只想从网址获取uSSer的值或某些可能的字段)并使用此正则表达式:

.*?[u,U][s,S][e,E][r,R].*?=(.*)&

如果参数uSSer在&之前,它可以工作。 URL上的令牌,但如果它是URL中的最后一个字段?像这样:

parameter1=foo&password=contra&uSSer=andoni

2 个答案:

答案 0 :(得分:1)

你的正则表达式看起来很有趣。我删除了.*?,

(^|&)[uU][sS][sS][eE][rR]=([^&]*)

它以&或任何内容开头。只要没有找到&符号,用户就可以了。

你可以在这里测试一下: http://regex101.com/r/wI5oX2/1

答案 1 :(得分:0)

将您想要用于分隔符的任何内容放入班级 这只适用于Python支持lookbehinds的情况 如果您打算不区分大小写,请将(?i)放在正则表达式的头部 或者,如果Python不支持内联修饰符,请将其作为函数选项 如果它不支持,请像您一样使用[aA]

 # (?<=[&/?\r\n])uSSer=([^&/?\r\n]+)

 (?<= [&/?\r\n] )
 uSSer=
 ( [^&/?\r\n]+ )       # (1)