用于替换的Java正则表达式 - 如何使其高效

时间:2015-11-06 12:29:24

标签: java regex

我设备的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

我想知道是否有更好的方法吗?

2 个答案:

答案 0 :(得分:3)

您可以使用这个更简单的正则表达式:

str = str.replaceFirst("_(%\\S*|[^_\\s]+)\\b", "");

即。匹配下划线,然后是2个替换:

  • %和0个或更多非空格字符
  • 1个或多个非下划线和非空格字符

这一切都应该跟一个单词边界。

RegEx Demo

答案 1 :(得分:1)

另一种变体:

_%I.*$|_[^_]+$