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

在java中,用什么正则表达式向带有certian模式的字符串添加掩码,java,regex,Java,Regex,我正在尝试获取以下字符串: 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-4927

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

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替换所有字符都很容易,但要排除最后一部分对我来说真的很难

[^-\n](?=.*-[^-]*$)
尝试此操作。替换为
X
。请参阅演示

对于java,它将是

[^-\\n](?=.*-[^-]*$)
前瞻条件将仅选择将被
X
替换的对象

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

对于java,它将是

[^-\\n](?=.*-[^-]*$)
前瞻条件将仅选择将被
X
替换的对象

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

对于java,它将是

[^-\\n](?=.*-[^-]*$)
前瞻条件将仅选择将被
X
替换的对象

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

对于java,它将是

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

前瞻条件将仅选择那些将被
X

替换的字符串。使用
string.replaceAll
函数

string.replaceAll("[^-\\n](?=.*?-)", "X");
这将匹配后跟连字符的所有字符(但不是连字符)。它与最后一部分不匹配,因为后面没有连字符


使用
string.replaceAll
函数

string.replaceAll("[^-\\n](?=.*?-)", "X");
这将匹配后跟连字符的所有字符(但不是连字符)。它与最后一部分不匹配,因为后面没有连字符


使用
string.replaceAll
函数

string.replaceAll("[^-\\n](?=.*?-)", "X");
这将匹配后跟连字符的所有字符(但不是连字符)。它与最后一部分不匹配,因为后面没有连字符


使用
string.replaceAll
函数

string.replaceAll("[^-\\n](?=.*?-)", "X");
这将匹配后跟连字符的所有字符(但不是连字符)。它与最后一部分不匹配,因为后面没有连字符


或将此图案替换为w/
x

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

或将此图案替换为w/
x

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

或将此图案替换为w/
x

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

或将此图案替换为w/
x

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