【问题标题】:Regex to fetch string after character and before word正则表达式在字符之后和单词之前获取字符串
【发布时间】:2022-01-27 17:24:16
【问题描述】:

我正在尝试编写一个正则表达式来获取字符和单词之间的字符串部分。

例如

FIRST/SECOND/999999/在第三个之前匹配这里的所有内容

它应该获取“999999/”(此部分将始终为数字,6 位,并以正斜杠结尾)和“third”(该词不会更改)之间的单词。 预期结果:在此之前匹配所有内容

我最终得到了以下正则表达式,但它仅在单词“匹配”之前有空格时才获取单词:

/(?

谁能帮忙?

谢谢!

编辑:更新澄清。谢谢@JvdV

【问题讨论】:

  • 会不会一直是前面的六位数部分?
  • 是的! 6 位数字和正斜杠。谢谢
  • 积极的后视要求在匹配之前有空格。删除它并将.(匹配每个字符)替换为[^/](匹配除/ 之外的所有字符)。如果您绝对需要它以 / 开头,仍然如前所述替换 .,但保持向后看并从中删除 \s
  • 也许可以试试(?:^|\/)\d{6}\/([^\/]+?)\s*\bthird 并使用第一个捕获组的内容。
  • 是的,就是这样!惊人。谢谢!

标签: regex


【解决方案1】:

看起来以下应该可以工作:

(?:^|\/)\d{6}\/([^\/]+?)\s*\bthird

在线查看demo


  • (?:^|\/) - 起始线锚或正斜杠的非捕获组;
  • \/ - 文字正斜杠;
  • ([^\/]+?) - 捕获组以捕获除正斜杠之外的 1+(惰性)字符;
  • \s*\bthird - 0+ 个空格字符,一个单词边界和字面意思是第三个单词。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-30
    • 2022-08-04
    • 2022-11-20
    • 2011-10-06
    • 1970-01-01
    • 2019-03-30
    • 2017-12-13
    • 2013-03-12
    相关资源
    最近更新 更多