0

我有一个文本文件,其中我说了这三行文本。

.....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 中使用扫描仪,但失败了。我还尝试使用制表符分隔字符串。看起来有一些不均匀间隔的标签。

我虽然使用正则表达式很容易获得这三个值。这是我到目前为止能够写的。有人可以帮帮我。

\\d\\.\\d
4

2 回答 2

3

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

分组使用这个(\d+\.\d+)\s+"(.+?)"\s+\((\d+?)\)

8.2          - 1 group
'Allo 'Allo! - 2 group
1982         - 3 group
于 2013-01-26T19:54:57.803 回答
2

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

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

您需要捕获 () 中的内容。

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

于 2013-01-26T19:51:00.680 回答