我目前正在使用像(.{12}$)|(^.{1,12}$)
这样的RegEx - 类似“如果值为1到12长,返回它们,否则返回最后12个。”
我想添加另一个子句,如果长度大于16,我需要返回它的一个子集(具体来说,从第5个字符开始,返回12)。
如何在同一个RegEx中执行此操作?
答案 0 :(得分: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