使用Regex从进程命令行捕获Java程序名/包名

使用Regex从进程命令行捕获Java程序名/包名,java,regex,Java,Regex,我需要从其进程命令行中提取Java程序名/包名。流程命令行的一个示例是 /usr/lib/jvm/jdk1.8/bin/java-Dzookeeper.datadir.autocreate=false-Dzookeeper.log.dir=/var/log/zookeeper-Dzookeeper.root.logger=INFO,滚动文件-cp/usr/lib/zookeer/bin/。/build/classes:/usr/lib/zookeer/bin/。/build/lib/zookee

我需要从其进程命令行中提取Java程序名/包名。流程命令行的一个示例是

/usr/lib/jvm/jdk1.8/bin/java-Dzookeeper.datadir.autocreate=false-Dzookeeper.log.dir=/var/log/zookeeper-Dzookeeper.root.logger=INFO,滚动文件-cp/usr/lib/zookeer/bin/。/build/classes:/usr/lib/zookeer/bin/。/build/lib/zookeer/bin/。/usr/lib/zookeer/bin/。/lib/slf4j-log4j12-1.7.5.jar:/usr/lib/zookeer/bin/。/lib/slf4j-api-1.7.5.jar:/usr/lib/zookeer/bin/。/bin/。/netty-3.10.5.Final.jar:/usr/lib/zookeer/zookeer/bin/bin/。/16/zookeer/log1er/bin/。/lib/jline-2.11.jar:/usr/lib/zookeeper/bin/。/zookeeper-3.4.8.jar:/usr/lib/zookeeper/bin/。/zookeeper-3.4.5-cdh5.15.0.jar:/usr/lib/zookeeper/bin/。/src/java/lib/.jar:/etc/zookeeper/conf:://etc/zookeeper/conf:://zookeeper/conf::/:/usr/lib/zookeeper/://zookeeper/:/::/usr/lib/zookeeper/://zookeeper/:/-Dcom.sun.management.jmxremote.local.only=false org.apache.zookeeper.server.quorum.qourumpeermain/etc/zookeer/conf-d/zoo.cfg

我需要捕获org.apache.zookeeper.server.quorum.qourumpeermain/etc/zookeeper/conf-d/zoo.cfg

我正在使用一个正则表达式(?:(?:.bin/|^)java\s.?-cp)(?:\s.jar.?)+(\s(?:(!-)+),它捕获org.apache.zookeeper.server.quorum.qourumpeermain/etc/zookeer/conf


需要帮助修复正则表达式或更好地捕获程序名。

不需要正则表达式。只需拆分为以空格分隔的字符串,然后删除第一个字符串(指向
java
可执行文件的路径)和所有以
-
开头的字符串(标志),直到遇到第一个不以
-
开头的字符串(虚线表示法中的类)。@DanielPryden我可以这样做。然而,还有一些与这个正则表达式相关的用例。所以我更喜欢基于正则表达式的解决方案。