【问题标题】:Python Regex Get String Between Two SubstringsPython Regex 获取两个子字符串之间的字符串
【发布时间】:2015-06-24 13:49:12
【问题描述】:

首先,我知道这可能似乎是一个重复的问题,但是,我找不到我的问题的有效解决方案。

我的字符串如下所示:

string = "api('randomkey123xyz987', 'key', 'text')"

我需要提取 randomkey123xyz987,它总是在 api('',

之间

我打算为此使用正则表达式,但是,我似乎遇到了一些麻烦。

这是我取得的唯一进展:

import re
string = "api('randomkey123xyz987', 'key', 'text')"
match = re.findall("\((.*?)\)", string)[0]
print match

以下代码返回'randomkey123xyz987', 'key', 'text'

我曾尝试使用[^'],但我的猜测是我没有正确地将其插入到 re.findall 函数中。

我尝试的一切都失败了。


更新:我目前的解决方法是使用 [2:-4],但我仍然想避免使用 match[2:-4]

【问题讨论】:

    标签: python regex python-2.7


    【解决方案1】:

    如果你确定 randomkey123xyz987 总是在 "api('" 和 "'," 之间,那么使用 split() 方法可以在一行中完成。这样你就不必使用正则表达式匹配。它将匹配开始和结束分隔符之间的模式,即 "api('" 和 "', ”。

    >>> string = "api('randomkey123xyz987', 'key', 'text')"
    >>> value = (string.split("api('")[1]).split("',")[0]
    >>> print value
    randomkey123xyz987
    

    【讨论】:

      【解决方案2】:

      你想要(, 之间的字符串,你可以捕捉到括号之间的所有内容:

      match = re.findall("api\((.*?),", string)
      
      print match 
      ["'randomkey123xyz987'"]
      

      或者''之间匹配:

      match = re.findall("api\('(.*?)'", string)
      print match 
      ['randomkey123xyz987']
      

      如果你的字符串是这样的,你可以拆分:

      string = "api('randomkey123xyz987', 'key', 'text')"
      
      print(string.split(",",1)[0][4:])
      

      【讨论】:

        【解决方案3】:

        如果字符串只包含一个实例,请改用re.search()

        >>> import re
        >>> s = "api('randomkey123xyz987', 'key', 'text')"
        >>> match = re.search(r"api\('([^']*)'", s).group(1)
        >>> print match
        randomkey123xyz987
        

        【讨论】:

          【解决方案4】:

          您应该使用以下正则表达式:

          api\('(.*?)'
          

          假设api(是固定前缀

          它匹配api(,然后捕获接下来出现的内容,直到' 令牌。

          >>> re.findall(r"api\('(.*?)'", "api('randomkey123xyz987', 'key', 'text')")
          ['randomkey123xyz987']
          

          【讨论】:

            猜你喜欢
            • 2013-09-14
            • 1970-01-01
            • 2013-09-12
            • 1970-01-01
            • 2014-09-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-12-28
            相关资源
            最近更新 更多