Java 中的正则表达式存在这样的问题。我编码聊天应用程序和客户端可以发送到服务器只是“消息”或“\命令值”。我想解析这个字符串并检查是否是行中的命令。如果它登录 - 值是必需的,但如果它注销 value.required 应该是假的。我创建了这样的正则表达式
"^\\\\(?<comm>login|status|((?=logout)))\\s(?<content>\\w+)"
我应该写什么来注销条件?我想在 comm 组中注销。我应该写 如果注销比不阅读任何其他步骤之类的东西。
最佳答案
您最好将参数设为可选:
^\\(?<command>login|status|logout)(?:\s(?<param>\w+))?
并用 Java 检查结果的逻辑。
如果你真的想使用正则表达式,你可以这样做:
^\\(?<command>login|status|logout(?=$))(?:\s(?<param>\w+))?$
关于java - 正则表达式、分组问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10984835/