【问题标题】:python capture from regexpython从正则表达式捕获
【发布时间】:2019-05-31 09:11:48
【问题描述】:

我正在编写一个正则表达式来查找 ? 并在此之前捕获所有内容。这是我目前所拥有的。

f = 'file.doc?gs_f'
f1 = re.search(r'(\?)',f)
print(f[:f1.start()]) #prints "file.doc"

如何使用正则表达式捕获? 之前的所有内容。这就是所谓的向后看,但我不确定如何使用它。

【问题讨论】:

标签: python regex python-3.x


【解决方案1】:

这可行:

^[^\?]+

并使用 findall:

f = 'file.doc?gs_f'
f1 = re.findall("^[^\?]+",f)

您可以在下面看到适用于任何类型字符串的正则表达式: Regex_Working

【讨论】:

  • 我想通过正则表达式做得更好。
  • 哦,我明白了,好的,请稍等,我将进行编辑并返回正则表达式答案。
  • 谢谢。我知道这与使用 <= 有关,但我尝试放置它,但是当我打印 f1.group(0)f1.group(1) 时,我一直得到 none
  • 去掉方括号中的反斜杠。
【解决方案2】:

多种可能性:

  1. 要么一切都不是问号:[^?]+
  2. 或带有捕获组的惰性量词:(.+?)\?
  3. 或积极的前瞻:.+?(?=\?)

regex101.com123)上查看相应的演示。

【讨论】:

  • 感谢大家的帮助
【解决方案3】:

你不需要往后看。

f = 'file.doc?gs_f'
re.search(r'([\w\.]*(?=\?))',f).group(0)

这里不错Regex lookahead, lookbehind and atomic groups

【讨论】:

    【解决方案4】:

    是的,它被称为正面展望。你必须向前看,直到? 到来。这是执行您的请求的正则表达式。如果您有任何问题,请告诉我。

    正则表达式:'.*(?=\?)'

    在这里,
    .* 将拉动一切。
    (?=) 是一个积极的展望
    \ 问号符号的转义字符。因为问号符号是正则表达式中的量词。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-12
      • 1970-01-01
      • 1970-01-01
      • 2014-01-02
      • 2014-06-17
      • 1970-01-01
      • 2019-03-17
      • 2018-07-21
      相关资源
      最近更新 更多