如何操作此正则表达式
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个或更多命令,它仍然有效。
答案 0 :(得分:1)
我认为最可读的方法是首先拆分|
,然后应用只允许一次匹配的正则表达式:
^[0-9]+\\.[tcm]#[^#]*#[wsn]$
如果您要查找由|
和/或字符串的开头/结尾分隔的匹配项,则可以使用positive lookahead assertions代替^
和{{1锚点:
$