zoukankan      html  css  js  c++  java
  • 条件正则过滤筛选 V1

    迭代的新版见条件正则过滤筛选 V2


    编辑(追加)条件正则(状态机?)

    功能需求:

    • 字符串中无b,则追加bc;
    • 字符串中有bc则跳过;
    • 字符串中有b(无bc),则更改为bc,或移动追加为bc;
    • 保留其他部分。

    示例:

    • 输入:
      • abcd
      • abd
      • ad
    • 输出:
      • abcd
      • adbc
      • adbc

    实现:

    Online regex tester and debugger: PHP, PCRE, Python, Golang and JavaScript (regex101.com)

    Regular expression:

    ^(?:(?!.*b)(?<pre1>.*)|(?<pre2>.*)(b(?!c))(?<post>.*))$

    Substitution:

    $<pre1>$<pre2>$<post>bc

    对不支持命名捕捉组的,可使用捕捉索引:

    Regular expression:

    ^(?:(?!.*b)(.*)|(.*)(:?b(?!c))(.*))$

    Substitution:

    $1$2$4bc

    使用到功能:

    • 前向/后向断言(Positive/Negative Lookahead/Lookbehind);
    • 匿名组/命名组;

    可使用功能:

    • 组索引复用编号(Duplicate subpattern group number),(?|..)
    • 复用组命名(Duplicate group names),标记(Flag/Modifiers)J

    在线测试网站

    Bulk Rename(BR)专项说明:

    • 正则是PRCE(PHP?)(而非ECMAScript(JavaScript) );
    • '命名捕捉组'的'名'中不可有数字;
    • 替换模式中需使用花括号{}(而非中括号<>);
    • 未捕获到时替换模式("$x")会返回空值null(而非空字符串);
    • 不支持(?|..)(PRCE支持);
    • 不完全支持'引用组'(查找模式中使用"n");
    • 不支持预定义命名组((?(DEFINE)(..)..));
    • 最终使用
      ^((?:(?!b).)*)(?:b(?!c))?((?:(?!b).)*)$
  • 相关阅读:
    Type Safety and Type Inference
    LEARN SWIFT
    swift 类型备份
    Swift
    associatedtype关联类型
    深入理解 Swift 派发机制
    Swift中self和Self
    Postfix Self Expression
    CGContext与上下文
    eeee
  • 原文地址:https://www.cnblogs.com/RobertL/p/14131438.html
Copyright © 2011-2022 走看看