使用正则表达式捕获特定文本之前的字符串

时间:2018-02-06 06:52:54

标签: regex

我有一个字符串' LKHI8700'我想在' 8700'之前提取三个字符。 例如,在LKHI8700中,我想提取' KHI8700'。字符串和代码的长度将不同,这就是为什么我不能使用正向提取。

2 个答案:

答案 0 :(得分:0)

对于仅包含大写字符的给定示例,您可以使用[A-Z]{3}(?=\d{4})

这将匹配

  • 匹配3个大写字符[A-Z]{3} (或[A-Za-z]表示大写和小写字符)
  • 一个积极的前瞻,断言以下是4位(?=\d{4})

或者要在4位数之前提取三个字符,您可以在组中捕获它们:

([A-Z]{3})\d{4}

答案 1 :(得分:0)

.*(?=\w{3}\d{4})

怎么样?

这会在您的代码之前获取任何字符,您可以替换为每个(空)

  • 。* - 任何charackters
  • (?= - 之后......
  • \ w {3} - 长度为3的单词字符
  • \ d {4} - 任何长度为4的数字

因此,如果您希望代码包含大写字符,则可以使用\w更改[A-Z]

Demo

另外,如果您只想使用代码:(\w{3}\d{4})

Demo