如何操作这个正则表达式
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-9]+\\.[tcm]#[^#]*#[wsn]$
如果您想查找由 |
和/或字符串的开头/结尾分隔的匹配项,可以使用 positive lookahead assertions 来实现而不是 ^
和 $
anchor :
(?<=^|\\|)[0-9]+\\.[tcm]#[^#]*#[wsn](?=$|\\|)
关于java - 连接多个命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25987623/