java - 连接多个命令

标签 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 个或更多命令,它仍然有效。

最佳答案

我认为最易读的方法是首先在 | 上进行拆分,然后应用仅允许一个匹配的正则表达式:

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

如果您想查找由 | 和/或字符串的开头/结尾分隔的匹配项,可以使用 positive lookahead assertions 来实现而不是 ^$ anchor :

(?<=^|\\|)[0-9]+\\.[tcm]#[^#]*#[wsn](?=$|\\|)

关于java - 连接多个命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25987623/

相关文章:

regex - Perl:删除较长字符串中的首字母缩略词连字符

c# - 按顺序获取html文档的链接

java - KeyEventDispatcher 和焦点

java - 如何在 JAX-WS 中控制 JAXBContext?

java - 亚马逊网络服务 - API 网关

javascript - < 后跟空格或不在正则表达式中

python - 这是在 Python 中列出目录(包括最终子目录)中所有 .mp3 文件的有效方法吗?

java - 当我尝试将两个 (.txt) 文件合并到另一个 (.txt) 文件中时,为什么我的代码不起作用?

java - 高斯消元Java

java - 正则表达式匹配至少 2 个数字,字符串中任意顺序的 2 个字母