【问题标题】:How to match substring or whole string如何匹配子字符串或整个字符串
【发布时间】:2020-08-23 14:30:56
【问题描述】:

在 Python 正则表达式中,我如何只匹配给定任一字符串的 facebook.com...777 子字符串?我不希望最后出现?sfnsn=mo
我有(?<=https://m\.)([^\s]+) 来匹配https://m. 之后的所有内容。我还有(?=\?sfnsn)来匹配?sfnsn前面的所有东西。

如何组合正则表达式以仅返回任一字符串的 facebook.com...777 部分。

有:https://m.facebook.com/story.php?story_fbid=123456789&id=7777777777?sfnsn=mo
求:facebook.com/story.php?story_fbid=123456789&id=7777777777

有:https://m.facebook.com/story.php?story_fbid=123456789&id=7777777777
求:facebook.com/story.php?story_fbid=123456789&id=7777777777

这就是我在搞砸https://regex101.com/r/WYz5dn/2

(?<=https://m\.)([^\s]+)(?=\?sfnsn)

【问题讨论】:

  • 您确定您的第一个网址正确吗?
  • 如果有帮助,请勾选答案!

标签: python regex


【解决方案1】:

在最后加上? 是可行的,因为最后一个分组的前瞻可能存在也可能不存在,我们在它后面加上一个问号:

(?&lt;=https://m\.)([^\s]+)(?=\?sfnsn)?

【讨论】:

    【解决方案2】:

    您可以使用捕获组而不是正向后视并匹配 ?sfnsn 或字符串的结尾。

    https://m\.(\S*?)(?:\?sfnsn|$)
    

    Regex demo

    使用环视,模式可以是:

    (?<=https://m\.)\S*?(?=\?sfnsn|$)
    

    Regex demo

    【讨论】:

      猜你喜欢
      • 2022-11-30
      • 1970-01-01
      • 2019-12-12
      • 2021-11-22
      • 1970-01-01
      • 2011-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多