【问题标题】:regex - How to make optional the end of the line正则表达式 - 如何使可选的行尾
【发布时间】:2014-09-11 21:49:34
【问题描述】:

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

uSSer=andoni&password=contra

(我只想从 url 获取 uSSer 的值或一些可能的字段)并且我正在使用这个正则表达式:

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

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

parameter1=foo&password=contra&uSSer=andoni

【问题讨论】:

  • 您在user 之间有一个.*?。你打算参加这场比赛us=foo&er=bar吗?请更具体地说明您的要求。
  • 使用URL parser
  • 那是how Python 解决了它。这是一个很好的例子:“正则表达式现在我有两个问题”。

标签: python regex url expression


【解决方案1】:

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

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

它以& 开头,或者什么都没有。并且用户只要没有找到 & 字符。

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

【讨论】:

    【解决方案2】:

    在类中放入您想用作分隔符的任何内容。
    这仅适用于 Python 支持后视。
    如果您打算不区分大小写,请将(?i) 放在正则表达式的开头。
    或者,如果 Python 不支持内联修饰符,请将其作为函数选项。
    如果它不支持,请使用 [aA] 就像你正在做的那样。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-25
      • 2017-07-01
      • 2016-08-15
      • 2012-12-17
      • 1970-01-01
      相关资源
      最近更新 更多