用于替换为分隔符的Java正则表达式:或$
我有一些作业运行以下非标准命名约定,下面有一些作业示例:用于替换为分隔符的Java正则表达式:或$,java,regex,Java,Regex,我有一些作业运行以下非标准命名约定,下面有一些作业示例: ========================================= Job Name | New Name ----------------------------- ---------- JOB:/Level0_APP1_12345_0/ JOB JOB:Level1_DBASW_t323dk23_p1 JOB JOB$SAV:
=========================================
Job Name | New Name
----------------------------- ----------
JOB:/Level0_APP1_12345_0/ JOB
JOB:Level1_DBASW_t323dk23_p1 JOB
JOB$SAV: JOB
backup:SYNC1 backup
QUERY:logs QUERY
QUERY$maps: QUERY
QUERY: QUERY
FS1:\ FS1:\ -- No change in name
PS:\MXMI PS:\MXMI -- No change in name
========================================
分隔符可以是(;)或($),以先到者为准。此外,正则表达式不应该包含名称中有(:\)的作业,如前2个示例所示
我使用了下面的方法,但没有成功
Regex:
(:|\$[a-zA-Z\/0-9]+)|(\$[a-zA-Z\/0-9]+)|(:$)
(.*)((\:|\$)([a-zA-Z\/0-9]+|$))
(.*)((\:|\$)(.*|$))
Substitution -> $1
我会在这里使用一个简单的正则表达式:
^(.*?)(?::(?!\\)|\$).*
它:
-字符串的开头^
-在第一组之前,将尽可能少的符号(新行除外)捕获到组1中。。。(.*)
-后面不跟(?::(?!\\)\$)
(带\
)的(?::(?!\\)
(带:
)的\$
。)
-匹配行的其余部分*
^(\w+(?=:\\.+):\\.+|[^:$]+)
第一个捕获组($1)是您正在寻找的Check@Tushar,您能否将此作为答案发布。首先,我想您可能是一位同事,他有一个类似的奇怪的工作名称惯例。但后来我发现这个问题是您自己提出来的。;-)
JOB
JOB
JOB
backup
QUERY
QUERY
QUERY
FS1:\
PS:\MXMI
^(\w+(?=:\\.+):\\.+|[^:$]+)