连接多个命令

时间:2014-09-23 05:40:12

标签: java regex

如何操作此正则表达式

String oneCmd = "([0-9]+\\.[tcm]{1}\\#.+\\#[wsn]{1})";  

避免匹配

"100.m#testValue#w100.m#testValue#w"

但允许匹配

100.m#testValue#w

?因为最后我想要有|

分隔的多个命令
String regex = "^(" + oneCmd + "$|" + oneCmd + "\\|{1}" + oneCmd + "$)";

以便有效命令为:

cmd
cmd|cmd1|cmd2|... not ending with an '|' !!

但第一个问题是,如果我只连接2个或更多命令,它仍然有效。

1 个答案:

答案 0 :(得分:1)

我认为最可读的方法是首先拆分|,然后应用只允许一次匹配的正则表达式:

^[0-9]+\\.[tcm]#[^#]*#[wsn]$

如果您要查找由|和/或字符串的开头/结尾分隔的匹配项,则可以使用positive lookahead assertions代替^和{{1锚点:

$