我需要从大量文本中提取值。我假设最好的方法是使用正则表达式。如果有人认为有更好的方法,可以随意提出建议。
我需要提取的值总是出现在以下形式的字符串中:
在[the_integer_value_I_need_to_extract]页面[formatted_int_value]结果
例如: 67页的3,342个结果
在上面的例子中,我试图提取的值是67.另请注意,上例中的每个单词可以用一个或多个空格和/或换行符分隔。并且,如上所述,此文本是更大文本的一部分(我正在屏幕抓取网页)。
有人可以帮我使用正则表达式来提取我需要的int值(在上面的例子中为67),考虑到我提供的条件吗?
感谢。
答案 0 :(得分:1)
正则表达式非常简单:
([\d,]+)\s+results\s+across\s+(\d+)\s+pages
67组将在组2中,另一组号(如果需要)在组1中。
var text = "some text here 3,342 results across 67 pages some more text here";
var regex = /([\d,]+)\s+results\s+across\s+(\d+)\s+pages/;
var matches = regex.exec(text);
/* matches will be this array:
["3,342 results across 67 pages", "3,342", "67"]
---- entire match -------------- --g1--- -g2-
*/
答案 1 :(得分:0)
int theIntYouWantToExtract = Integer.parseInt(yourLongText.replaceAll(
".*([\d,]+) results across ([\d,]+) pages.*",
"$2"));