匹配特殊字符串后的文本

match a text that follows a special string

我的正则表达式有问题,我正在尝试在特殊字符串后提取 string/number/whatever。

我有这个字符串:

TEST 3098

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

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

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

您可以使用

TEST\s*\K\S+

如果要将空格数设置为某个 min/max 数字,请使用 limiting quantifier\s{2,} 将匹配两个或更多,\s{1,10} 将允许 1 到 10空格。

详情

  • TEST - TEST
  • \s* - 0 个或更多空格
  • \K - match reset operator 从整体匹配内存缓冲区中省略到目前为止匹配的文本
  • \S+ - 1+ 个非空格

regex demo