考虑以下命令行:tfile -a -fn P2324_234.w07 -tc 8811
解析这个的正则表达式:(-\w+|\w+\s|\w+\.+\w+\s
见下面的截图)
问题是当文件名有多个点时,比如:tfile -a -fn P23.24.23.4.w07 -tc 8811
问题:如何确保将P23.24.23.4.w07
解析为一个参数(如P23.24.23.4.w07
)?
使用字符类,例如/-fn [a-z0-9.]+ -tc/i
. 在英语中,这意味着“ -fn
,后跟一个或多个字符 between a-z
、 between0-9
或 a .
,后跟-tc
。” 如果要捕获该部分,请将该部分括在括号中。
我用过这个 -\w+|\w+\s|\S+.+\w+\s
我们可以使用“not space”代替“word”,您没有指定额外的要求,所以我认为这很好。
使用量词:
-\w+|\w+\s|(?:\w+\.+)+\w+\s
^^^ ^^
你也可以简单地表达你的意思:
-?\w+\s?|(?:\w+\.+)+\w+\s
为了在 java 中执行此操作,您需要做的就是将其沿空格拆分,不需要正则表达式。好的oleString.split()
应该能够处理它。