0

我想返回下面文本的第一个“abcd”部分。

 00abcd126456\x 00abcd126456\x

我想选择第一个“00”和第一个(6 位数字 +“\x”)之间的所有文本。每个字符串都以“00”开头。

我一直在尝试:

^ 00(.*)\d{6}\\x

但它显然选择了整个字符串。

请帮忙。

4

1 回答 1

3

使用非贪婪量词:

^ 00(.*?)\d{6}\\x

*?只会匹配尽可能少的字符以允许匹配成功,而不是*匹配尽可能多的字符

如果您不想摆弄捕获组,您也可以使用环视:

(?<=^ 00).*?(?=\d{6}\\x)

快速 PowerShell 测试:

PS> ' 00abcd126456\x 00abcd126456\x' -match '(?<=^ 00).*?(?=\d{6}\\x)'; $Matches
True

Name                           Value
----                           -----
0                              abcd
于 2013-01-25T10:23:48.043 回答