java - 正则表达式、分组问题

标签 java regex

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/

相关文章:

java - 如何从另一个管道中排出一个管道?

java - 谁能告诉我如何使用 C 或 Java 中的图形来解决这个问题?

java - 使用 Java 模式匹配字符串中四个重复字母的正则表达式

python - 检测和更改 PDF 中的字符串

regex - 如何确定正则表达式中的重复次数?

java - xtext 域模型项目无法识别 JVM 类型

Java:文件输出帮助

java - MissingResourceException : Can't find bundle for base name sun. util.logging.resources.logging,语言环境 en_US

Python 和 Regex 将书面数字转换为数字

regex - 如何使用Vim提取正则表达式匹配