代码之家  ›  专栏  ›  技术社区  ›  Iverson Wang

正则表达式的固定位置

  •  1
  • Iverson Wang  · 技术社区  · 7 年前

    我有以下字符串,并且布局是固定的,所以我使用以下方法来检索信息

    $A = "00035king"
    $Regex = '(.{5})(.{4})'
    $Replace = '$2,$1'
    $A = $A -replace $Regex, $Replace
    

    结果是 king,00035 . 然而,我想删除我的第二部分的前导零,这将它从 00035 35 . 有没有什么我可以做的或者有什么建议?非常感谢。

    1 回复  |  直到 7 年前
        1
  •  3
  •   Wiktor Stribiżew    7 年前

    您可以在字符串开头匹配0到4个零,后跟1到5个字符,然后检查从字符串开头开始是否有5个字符被使用。

    使用

    '^0{0,4}(.{1,5})(?<=^.{5})(.{4})$'
    

    请参见 regex demo

    细节

    • ^ -字符串的开头
    • 0{0,4} -0到4个零
    • (.{1,5}) -第1组:1到5个字符
    • (?<=^.{5}) -一个正向查找,要求从字符串开始到当前位置之前必须有5个字符
    • (.{4}) -第2组:任意四个字符
    • $ -字符串结束(或 \z 将匹配字符串的最末端)。