我有一个文本文件,我说这三行文字。
.....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
答案 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位数字和文字)。