需要帮助改善我的正则表达式

时间:2013-01-26 19:42:30

标签: java regex

我有一个文本文件,我说这三行文字。

.....03122      25   8.2  "'Allo 'Allo!" (1982) {Fleeing Monks (#7.3)}
0.1.1.2003      15   5.6  "$weepstake$" (1979)
0..0012101      45   6.6  "$#*! My Dad Says" (2010) {Make a Wish (#1.9)}

我想只提取以下内容。

8.2  "'Allo 'Allo!" (1982)
5.6  "$weepstake$" (1979)
6.6  "$#*! My Dad Says" (2010)

我尝试在Java中使用扫描仪,但它失败了。我还尝试使用制表符空格分割字符串。看起来有一些不均匀间隔的标签。

我虽然使用Regex很容易获得这三个值。到目前为止,这是我能够写的。有人可以帮助我。

\\d\\.\\d

2 个答案:

答案 0 :(得分:3)

使用此正则表达式\d+\.\d+\s+".+?"\s+\(\d+?\)

用于分组使用此(\d+\.\d+)\s+"(.+?)"\s+\((\d+?)\)

8.2          - 1 group
'Allo 'Allo! - 2 group
1982         - 3 group

答案 1 :(得分:2)

我不知道是否有正确答案,这取决于数据的确切性质,但我建议这样:

 [0-9.]+\s+\d+\s+(\d\.\d\s+.*" \(\d\d\d\d\))

你想要捕捉()中的东西。

这意味着匹配数字/点,后跟一个或多个空格,后跟数字,后跟一个或多个空格。然后在实际匹配中,数字,点,数字,1个或多个空格,引号,空格,文字(,4位数字和文字)。