Java 正则表达式以任意顺序匹配组

Java 正则表达式以任意顺序匹配组,java,regex,Java,Regex,我接到如下命令: 用户登录-用户名-密码 正则表达式组的顺序并不重要。后标记的组可以按任何顺序出现。我想知道是否有更巧妙的方法来处理这个问题 我是这样做的: user login (username|password) (\w+) (username | password) (\w+) 例如,以下两个命令都有效 user login username bob password 12345 user login password 12345 username bob 我捕获了字段及其值。例如,

我接到如下命令:

用户登录-用户名-密码 正则表达式组的顺序并不重要。后标记的组可以按任何顺序出现。我想知道是否有更巧妙的方法来处理这个问题

我是这样做的:

user login (username|password) (\w+) (username | password) (\w+)
例如,以下两个命令都有效

user login username bob password 12345
user login password 12345 username bob

我捕获了字段及其值。例如,在本例中,我尝试捕获用户名和密码。但是,如果组的数量增加,使用|运算符处理它会有点困难。

正则表达式不是命令行解析的合适工具


使用类似的工具。

我建议您使用适当的工具:参数解析器,该工具用于接受参数和命令的程序。开始时,您在用户名和密码前设置一个破折号,最后设置一个破折号,所以?参数解析的有效语法是-u一个破折号表示一个字母名称或-username 2破折号表示单词名称。这是一个错误。通过检查选项和参数的值来提取选项和参数,更好的方法是:使用一个经过验证的库,而不是重新发明轮子。我不想添加一个完整的其他答案,但我个人会在一年中的任何一天推荐JCommander