1

我目前正在使用这样的正则表达式(.{12}$)|(^.{1,12}$)- 类似于“如果值是 1 到 12 长,则返回它们,否则返回最后的 12。

我希望添加另一个子句,如果长度大于 16,我需要返回它的一个子集(具体来说,从第 5 个字符开始,返回 12)。

如何在同一个 RegEx 中执行此操作?

4

1 回答 1

1

它似乎与

(?<=^.{4}).{12}|^.{1,12}$

这包含两个部分。第一个处理长度至少为 16 个字符的字符串。为此,它从第五个字符开始匹配(这就是它的(?<=^.{4})用途——确保前面正好有四个字符)。之后,必须至少有 12 个匹配的字符。

第二部分仅针对具有 1-12 个字符的字符串,匹配完整的字符串。

快速 PowerShell 测试:

PS> '12345','1234567890','abcdefghijklmnopqrst'|%{if($_-match'(?<=^.{4}).{12}|^.{1,12}$'){$Matches}}

Name                           Value
----                           -----
0                              12345
0                              1234567890
0                              efghijklmnop
于 2013-02-28T14:21:39.487 回答