选择两个表达式之间的第一个文

时间:2013-01-25 10:20:11

标签: regex

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

 00abcd126456\x 00abcd126456\x

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

我一直在努力:

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

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

请帮忙。

1 个答案:

答案 0 :(得分: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
相关问题