【问题标题】:Regex, get only words from last piece of an URL正则表达式,仅从 URL 的最后一段中获取单词
【发布时间】:2020-12-31 00:29:13
【问题描述】:

我正在使用 Python 中的 Regex 模块进行练习,但遇到了困难。我设法从最后一段 URL 字符串中只提取单词,不包括 .pdf、.jpg 等格式类型......例如:

first-second-third.pdf

只接收“第一”、“第二”、“第三”。

我用过这样的模式:

pattern1=re.compile(r"(?<!\.)\b\w+")
pattern2=re.compile(r"(?<!\.)\b[a-z]+")

这些模式适用于前面的 URL 示例,但不适用于以下 URL:

first_second_third.pdf

first%20second%20third.pdf

要查找我使用的所有单词:

matching=re.findall(pattern1or2,url)

所以问题是我的匹配中包含的“_”或“%20”等字符。 一些技巧 ?非常感谢。

编辑:我表达得不好。我的意思是 URL 的最后一部分,它标识了假设文件的格式。

【问题讨论】:

  • 首先,您不会在域名中找到空格 (%20)...
  • 感谢先生的理解。 @MattDMo。您的幽默评论将对我的目的非常有用:))。

标签: python-3.x regex string url


【解决方案1】:

您不能使用单词边界,因为在此字符串中first_second_third.pdf 与以下_ 和以下st 之间没有单词边界

您可以使用字符类 [a-z]+ 仅匹配小写字符,断言直接在左边的不是点或小写字符 a-z 以防止部分匹配。

使用肯定的前瞻来断言字符串以点结尾,例如 1 个或多个单词字符。

(?<![.a-z])[a-z]+(?=.*\.\w+$)

Regex demo

【讨论】:

  • 我知道我不应该添加评论来表示感谢,但你一直很绅士。非常感谢。
猜你喜欢
  • 2012-02-06
  • 2011-08-09
  • 1970-01-01
  • 2015-02-22
  • 1970-01-01
  • 2022-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多