【问题标题】:regex matching string in between string正则表达式匹配字符串之间的字符串
【发布时间】:2020-10-19 06:40:07
【问题描述】:

我一直觉得正则表达式很难。对不起,我不得不问,

https://meet.google.com/zzz-tssd-trt?authuser=1
https://meet.google.com/zzz-tssd-trt
https://meet.google.com/zzz44-5454ws-fgaf

如何从这些字符串中获取代码,例如 zzz44-5454ws-fgafzzz-tssd-trtzzz-tssd-trt

【问题讨论】:

  • 为什么你的 Q 被标记为 JavaScript 和 python?当然,您不需要两种语言的解决方案。
  • 我的错。我已经删除了它们。
  • [\w-]+(?=\?|$) 这也选择了末尾的 1,authuser=1 中的 1。
  • 并且不从https://meet.google.com/zzz-tssd-trt中选择任何内容
  • (?<=\/)[\w-]+(?=\?|$)

标签: javascript python regex string match


【解决方案1】:

无需使用正则表达式。使用更安全URL

const paths = `https://meet.google.com/zzz-tssd-trt?authuser=1
https://meet.google.com/zzz-tssd-trt
https://meet.google.com/zzz44-5454ws-fgaf`
 .split(/\n/).map(url => new URL(url).pathname)

console.log(paths)

【讨论】:

  • 我用过这个,但我想我也会尝试使用正则表达式。谢谢你
  • '有些人在遇到问题时会想“我知道,我会使用正则表达式”。现在他们有两个问题。'
【解决方案2】:

您可以使用正则表达式\w(?=/)/([^?|\n]+),此regwx 会将最后一个/ 之后和? 或新行之前的所有字符分组。

import re

s = """
https://meet.google.com/zzz-tssd-trt?authuser=1
https://meet.google.com/zzz-tssd-trt
https://meet.google.com/zzz44-5454ws-fgaf
"""

print(re.findall(r"\w(?=/)/([^?|\n]+)", s))

输出

['zzz-tssd-trt', 'zzz-tssd-trt', 'zzz44-5454ws-fgaf']

【讨论】:

    【解决方案3】:

    'https://meet.google.com/[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{3}','gi' 这更具限制性,对我来说效果很好。

    【讨论】:

      猜你喜欢
      • 2010-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-26
      • 1970-01-01
      • 2022-09-23
      • 2011-11-08
      相关资源
      最近更新 更多