【问题标题】:regex + capturing groups with varying conditions正则表达式 + 捕获具有不同条件的组
【发布时间】:2015-07-30 23:14:10
【问题描述】:

在这里处理正则表达式https://regex101.com/r/wI2cG1/1

这是数据:

K'1234567
K'123456789
K'123456

我对 K' 之后的数字感兴趣
我希望使用正则表达式来执行此操作,但不确定是否可以完成。我想要的是:
如果号码有 6 位,则返回前 2 位,例如12
如果号码有 7 位,则返回前 3 位,例如123
如果号码有 9 位,则返回前 4 位,例如第1234章

还有 如果号码有 10 位或 11 位数字,则返回前 3 位数字,例如123

我想将这些返回到不同的捕获组名称,或者如果可能的话,返回相同的捕获组名称。

【问题讨论】:

    标签: regex


    【解决方案1】:

    可以使用branch reset 功能将结果保存在一组中:

    K'(?|(\d{2,3})\d{4}|(\d{4})\d{5}|(\d{3})\d{7,8})\b
    

    Regex Demo

    【讨论】:

    • tks 我做对了吗,如果我想将它返回到同名的name1 捕获组? here
    • 是的,如果您在其他备选方案中省略了命名组,这些组仍将与其他备选方案共享名称。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    • 2016-12-23
    • 2022-11-21
    • 1970-01-01
    • 2020-01-20
    相关资源
    最近更新 更多