代码之家  ›  专栏  ›  技术社区  ›  Dreamer

在java中,使用certian模式向字符串添加掩码的正则表达式是什么

  •  0
  • Dreamer  · 技术社区  · 11 年前

    我正在尝试获取以下字符串:

    8374651-37374-19283-284745800
    928S-29ED374-872B34-932837
    26598TA-297374-CND283-16373
    82911-LD391DB-632D-4927831
    

    java正则表达式如下:

    XXXXXXX-XXXXX-XXXXX-284745800
    XXXX-XXXXXXX-XXXXXX-932837
    XXXXXXX-XXXXXX-XXXXXX-16373
    XXXXX-XXXXXXX-XXXX-4927831
    

    每个连字符之间的字符串长度没有模式。

    用X替换除连字符以外的所有内容可能很容易,但我很难排除最后一部分。

    3 回复  |  直到 11 年前
        1
  •  2
  •   Avinash Raj    11 年前

    使用 string.replaceAll 作用

    string.replaceAll("[^-\\n](?=.*?-)", "X");
    

    这与所有字符匹配( 但不是连字符 )其后是连字符。它与最后一部分不匹配,因为后面没有连字符。

    DEMO

        2
  •  1
  •   vks    11 年前
    [^-\n](?=.*-[^-]*$)
    

    尝试此操作。替换为 X 。请参阅演示。

    https://regex101.com/r/bW3aR1/18

    对于java

    [^-\\n](?=.*-[^-]*$)
    

    前瞻条件将仅选择要替换为 十、 .

        3
  •  0
  •   alpha bravo    11 年前

    或此模式,替换w/ x

    (?!-).(?=.*-)
    

    Demo