Java替代-多种选择
我需要创建一个单行正则表达式来对来自应用程序的作业名执行替换 例如:Java替代-多种选择,java,regex,Java,Regex,我需要创建一个单行正则表达式来对来自应用程序的作业名执行替换 例如: Job names Substituted name --------- ----------- PART:CP21_aserdh.2317_1 CP21 PART:XY4_gsods.2218_1 XY4 JOB:ES2 ES2 JOB:AP50 AP50 我试过一些
Job names Substituted name
--------- -----------
PART:CP21_aserdh.2317_1 CP21
PART:XY4_gsods.2218_1 XY4
JOB:ES2 ES2
JOB:AP50 AP50
我试过一些不起作用的正则表达式
(?:(PART:(.*)_.*_)|(JOB:(.*)))
(PART:(.*)|JOB:(.*)_+)
(?:PART|JOB)[:](.*)[_]?
您可以使用:
str = str.replaceAll("\\b(?:PART|JOB):([A-Z0-9]+).*", "$1");
对于您给出的简单示例,这将起作用:
str.replaceAll(".*:([^_]+).*", "$1")
谢谢@anubhava,效果很好。。。但我不能将你的答案标记为你的答案,因为有一个简短的版本……它之所以简短,是因为你的问题中不清楚你是在
部分之后匹配:
,还是在任何事情之后匹配:
。如果输入中有多个:
,该怎么办?谢谢@speedogo,这个想法很有用…@Marcos为什么不把答案也投上一票呢?:)这对回答者来说很酷。附言:它是否如预期的那样工作?我在Regex101上测试了它,它的输出与anubhava的答案不一样