我正在使用 Java 尝试解析文件。我在文档中寻找年龄的人。以下是我到目前为止看到的示例:
49岁
31 岁
, 26,
, 45,
30多岁,
三十年代末,
基本上,我需要提取文件中所有年龄的人。我不确定会达到这些参数的正确正则表达式是什么。对于像“三十”这样的数字,做所有数字系列“四十”、“五十”等的最佳方法是什么?
在这种情况下,在这种情况下,我不会使用正则表达式。我宁愿构建一个扫描输入的函数。我认为它会更可靠。正则表达式,有时会有点乱。
对于除最后一个以外的所有示例输入,使用类似以下模式的方法可以直接提取年龄:
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));
}
但是当年龄用文字写出来时,没有直接的解决方案,可能还有你的模式(或者你将采取的任何算法来提取它);必须随着时间的推移而发展,因为人们可能会以您必须适应的不同风格输入他们的年龄。
我从斯坦福的 CS 朋友那里找到了我的问题的答案。
当您可以为您生成正则表达式代码时,为什么要手动找出所有正则表达式代码?
http://txt2re.com/index-java.php3
该网站使您可以非常轻松地选择您要提取的信息。它成功地找到了我想从字符串中提取的所有可能性,我只需单击我想要的部分。
该工具击败了我发现的关于正则表达式的所有其他内容。