Java的正则表达式替换 - 如何使有效的
问题描述:
我有设备一个Java正则表达式如下替代Java的正则表达式替换 - 如何使有效的
Pre-substitution | Post-substitution
=============================
GOSP_vhqjvfec | GOSP
INWMDN_10qkva | INWMDN
OS_INT_ihdqivmf0 | OS_INT
RSO15_1_%I_0gkuns | RSO15_1
AUDIT124_%I_qkbfn1 | AUDIT124
==============================
执行我用这个正则表达式
regular exp -> (.*?)_%.*|(.*)_.*
substitution -> $1$2
我想知道是否有一个更好的方法来做到这一点?
答
可以使用此简单的正则表达式:
str = str.replaceFirst("_(%\\S*|[^_\\s]+)\\b", "");
即匹配下划线接着用2个交替:
-
%
和0个或更多的非空间字符 - 1或更大的非-underscore和非空格字符
这一切应该跟着一个字边界。
漂亮整洁的方法,真好! – Doro
@anubhava,感谢您的快速回复,我会在星期一进行测试 – Marcos
@anubhava,我正面临着上述问题(我的不好,我忘记提及我的问题的条件)..如果有这样的价值作为OSR_PREP或GOM_GSO_12,它应该保持不变,不应该有任何替代...这是我的问题的扩展 – Marcos