Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java替代-多种选择_Java_Regex - Fatal编程技术网

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的答案不一样