Java正则表达式从大量文本中提取整数
我需要从大量文本中提取一个值。我认为最好的方法是使用正则表达式。如果有人认为有更好的方法,请随时提出建议 我需要提取的值始终以以下形式的字符串显示: [格式化的\u int\u值]跨[整数值需要提取]页面的结果 e、 g:3342个结果,共67页 在上面的例子中,我试图提取的值是67。还要注意,上面示例中的每个单词可能由一个或多个空格和/或换行符分隔。如前所述,此文本是更大文本体的一部分(我正在屏幕上抓取网页) 有人能帮我使用正则表达式来提取我需要的int值(在我上面的例子中是67)吗?它考虑了我提供的条件Java正则表达式从大量文本中提取整数,java,regex,Java,Regex,我需要从大量文本中提取一个值。我认为最好的方法是使用正则表达式。如果有人认为有更好的方法,请随时提出建议 我需要提取的值始终以以下形式的字符串显示: [格式化的\u int\u值]跨[整数值需要提取]页面的结果 e、 g:3342个结果,共67页 在上面的例子中,我试图提取的值是67。还要注意,上面示例中的每个单词可能由一个或多个空格和/或换行符分隔。如前所述,此文本是更大文本体的一部分(我正在屏幕上抓取网页) 有人能帮我使用正则表达式来提取我需要的int值(在我上面的例子中是67)吗?它考虑了
谢谢。正则表达式将非常简单:
([\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-
*/
为了满足他的空白要求,用
\s+
刷新我的记忆,请问\s
会自动处理换行吗?托尼·恩尼斯:是的,换行是\s
的一部分。自己检查:/^\s+$/.test(“\r\n”)
返回true
@Peter:它应该考虑换行符。你注意到我在@Michael的评论后改变了我的答案吗?如果它不适合你,你没有提到所有必要的细节。此外,除非您没有按照描述的方式进行操作,否则组计数不会更改。这太不明确了——它将获取与“X结果与Y结果”模式不匹配的整数。@Michael:噢!是的,的确如此。我没看见。
int theIntYouWantToExtract = Integer.parseInt(yourLongText.replaceAll(
".*([\d,]+) results across ([\d,]+) pages.*",
"$2"));