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

标签 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

我想知道有没有更好的方法呢?

最佳答案

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

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

即匹配下划线后跟 2 个交替:

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

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

RegEx Demo

关于用于替换的 Java 正则表达式 - 如何使其高效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33566830/

相关文章:

python - 使用正则表达式在 Python 中保留上下文的同时解析句子的一部分

java - 如何在Java中获取多个值Regex表达式

java - 在 Java 中使用 String.matches 中的正则表达式来匹配日期格式

java - : "Refreshing Process Information". java.lang.NullPointerException 期间发生内部错误

java - 使用java套接字发送时图像不完整

java - 获取每个月的计数

java - weblogic中的一致性服务器

javascript - 手机号码的正则表达式使括号作为国家代码的可选,破折号、点和空格是可选的

ruby - 使用 Ruby 和 gsub 替换字符串中大括号内的文本(包括括号本身)

java - 模型的 Primefaces TabView - 关闭时删除与选项卡关联的模型