正则表达式 - 具有多个句点的文件名

时间:2013-06-12 01:20:53

标签: java regex parsing

请考虑以下命令行: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中所述)?

enter image description here

5 个答案:

答案 0 :(得分:3)

描述它!

For: P23.24.23.4.w07
use: \w+(?:\.\w+)+

请注意,对于您的Java版本,您可以使用possessive quantifiersatomic groups

\\w++(?>\\.\\w++)+

答案 1 :(得分:3)

使用字符类,例如/-fn [a-z0-9.]+ -tc/i。在英语中,这意味着“-fn,后跟a-z之间,0-9.之间,后跟-tc之间的一个或多个字符。”如果要捕获该部分,请将该部分包装在括号中。

答案 2 :(得分:1)

我用过这个 - \ W + |。\ W + \ S | \ S + + \ W + \ S

我们可能会使用'not space'来代替'word',你没有指定你的额外要求,所以我觉得它很好。

Regexpal testing

答案 3 :(得分:0)

使用量词:

-\w+|\w+\s|(?:\w+\.+)+\w+\s
           ^^^      ^^

你也可以简单地表达:

-?\w+\s?|(?:\w+\.+)+\w+\s

答案 4 :(得分:0)

为了在java中执行此操作,您需要做的就是沿着空格拆分它,不需要正则表达式。好的String.split()应该能够处理它。