0

我正在使用 Java 尝试解析文件。我在文档中寻找年龄的人。以下是我到目前为止看到的示例:

49岁

31 岁

, 26,

, 45,

30多岁,

三十年代末,

基本上,我需要提取文件中所有年龄的人。我不确定会达到这些参数的正确正则表达式是什么。对于像“三十”这样的数字,做所有数字系列“四十”、“五十”等的最佳方法是什么?

4

3 回答 3

0

在这种情况下,在这种情况下,我不会使用正则表达式。我宁愿构建一个扫描输入的函数。我认为它会更可靠。正则表达式,有时会有点乱。

于 2013-02-12T01:43:46.403 回答
0

对于除最后一个以外的所有示例输入,使用类似以下模式的方法可以直接提取年龄:

Pattern pattern = Pattern.compile("[^\\d]*(\\d+)[^\\d]*");
Matcher matcher = pattern.matcher("30s"); // 49-years-old, 31 years old
if (matcher.matches()) {
   System.out.println(matcher.group(1));
}

但是当年龄用文字写出来时,没有直接的解决方案,可能还有你的模式(或者你将采取的任何算法来提取它);必须随着时间的推移而发展,因为人们可能会以您必须适应的不同风格输入他们的年龄。

于 2013-02-12T02:10:02.913 回答
0

我从斯坦福的 CS 朋友那里找到了我的问题的答案。

当您可以为您生成正则表达式代码时,为什么要手动找出所有正则表达式代码?

http://txt2re.com/index-java.php3

该网站使您可以非常轻松地选择您要提取的信息。它成功地找到了我想从字符串中提取的所有可能性,我只需单击我想要的部分。

该工具击败了我发现的关于正则表达式的所有其他内容。

于 2013-02-16T17:11:21.110 回答