[英]java - String.replaceAll to replace all characters not in pattern
我有一个Java正则表达式:
^[a-zA-Z_][a-zA-Z0-9_]{1,126}$
它的意思是:
现在,我想用下划线替换具有不在该正则表达式中的字符的字符串。
例:
final String label = "23_fgh99@#";
System.out.println(label.replaceAll("^[^a-zA-Z_][^a-zA-Z0-9_]{1,126}$", "_"));
但结果仍然是23_fgh99@#
。
如何将其“转换”为_3_fgh99__
?
使用此代码 :
final String label = "23_fgh99@#";
System.out.println(label.replaceAll("^[^a-zA-Z_]|(?<!^)[^a-zA-Z0-9_]", "_"));
它输出_3_fgh99__
。
要删除“不在原始模式中”的内容,您需要取消第一个字符类并仅检查开头的字符( ^[^a-zA-Z_]
),然后检查不是在开头的其他字符否定的第二个字符类( (?<!^)[^a-zA-Z0-9_]
)。 然后,我们只使用交替符号|
在1次更换操作中应用这两种模式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.