首页 > 解决方案 > 匹配特殊字符串后面的文本

问题描述

我的正则表达式有问题,我试图在特殊字符串之后提取字符串/数字/任何内容。

我有这个字符串:

测试 3098

TEST 与其值之间有 6 个空格,但我不太确定它是否总是 6 个空格。我正在尝试这个正则表达式(PCRE)

(?<=TEST\s\s\s\s\s\s).*?(?=\s)

结果应该是 3098。用我的正则表达式,我得到了正确的结果,但它不够强大,如果空格数发生变化,我将无法提取它。后视应该是有限的大小。有什么建议么?

标签: regexpcreregular-language

解决方案


您可以使用

TEST\s*\K\S+

如果应将空格数设置为某个最小/最大数,请使用限制量词\s{2,}将匹配两个或更多,\s{1,10}将允许 1 到 10 个空格。

细节

  • TEST-TEST
  • \s*- 0 个或多个空格
  • \K-匹配重置操作符,从整体匹配内存缓冲区中忽略匹配的文本
  • \S+- 1+ 非空格

查看正则表达式演示


推荐阅读