【问题标题】:First 3 characters of last word using regex?使用正则表达式的最后一个单词的前 3 个字符?
【发布时间】:2021-11-16 20:07:45
【问题描述】:

假设您有一个类似以下 2 个示例的字符串:

  1. ABC DEF GHI JKL MNOPQR STUVWX
  2. ABC DEF GHI JKL MNOPQR STU VWX

在第一个示例中,我想返回 STU,在第二个示例中,我想返回 VWX

  • 我知道我可以使用 ^.{3} 来获取整个字符串的前 3 个字母,例如ABC。
  • 我知道我可以使用 [A-Za-z]+$ 来获取最终单词,例如STUVWX 和 VWX。
  • 我不知道如何将其组合成一个返回 STU 和 VWX 的正则表达式。

【问题讨论】:

    标签: regex


    【解决方案1】:

    您可以使用捕获组来匹配 3 个字符 A-Za-z,并匹配可选字符直到字符串结尾。

    为了防止部分匹配,您可以在前面加上一个单词边界\b

    \b([A-Za-z]{3})[A-Za-z]*$
    

    Regex demo

    另一个使用环视来获得匹配的选项可能是在左侧声明一个空白边界,并将可选字符 A-Za-z 声明到右侧的字符串末尾。

    (?<!\S)[A-Za-z]{3}(?=[A-Za-z]*$)
    

    Regex demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-29
      相关资源
      最近更新 更多