匹配特殊字符串后的文本
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+ 个非空格
我的正则表达式有问题,我正在尝试在特殊字符串后提取 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+ 个非空格