Java Regex字符串,仅保留具有某些不同条件的行

Java Regex字符串,仅保留具有某些不同条件的行,java,regex,criteria,Java,Regex,Criteria,我有一个文本文件,我想从中每行只提取3个整数(有些是负数)。出现整数的行都以相同的方式结束(,world),但是文本文件中并非所有的行都包含这些整数。此文件中整数所在的三行以及没有理想整数的两行如下所示: [16:22:99] [Client thread/INFO]: lorem ipsum [17:30:23] [Client thread/INFO]: 108, 46, 646, world [17:30:23] [Client thread/INFO]: -1000, 39, 719,

我有一个文本文件,我想从中每行只提取3个整数(有些是负数)。出现整数的行都以相同的方式结束(,world)但是文本文件中并非所有的行都包含这些整数。此文件中整数所在的三行以及没有理想整数的两行如下所示:

[16:22:99] [Client thread/INFO]: lorem ipsum
[17:30:23] [Client thread/INFO]: 108, 46, 646, world
[17:30:23] [Client thread/INFO]: -1000, 39, 719, world
[17:30:23] [Client thread/INFO]: 927, 63, -1, world
[18:42:19] [Client thread/INFO]: dolor sit amet
我想从中得到的结果很简单:

108, 46, 646
-1000, 39, 719
927, 63, -1
请注意,整数大小可能在1-4之间

目前,我有以下代码,这些代码很粗糙,但在细化文本文件以仅包含那些具有所需整数的行之后才起作用(这是一个无效的过程):

这只将3个整数三元组添加到所需的字符串数组中,但是我希望能够提取整数,而无需编辑文本文件

我的问题是:如何使用正则表达式在字符串数组中只保留3位数的三元组,包括偶尔的负号,尽管有些行根本没有三元组?

使用这个简单的模式提取您想要的内容

(-?\d{1,4}, -?\d{1,4}, -?\d{1,4})

根据下面的注释,请改用此模式

(-?\d{1,4}, -?\d{1,4}, -?\d{1,4})(?=, world)

可以尝试以下方法:

((-?\d+(,\s)?)+)(?=,\sworld)\b


它匹配逗号分隔的数字,包括负数,直到
world
。如果一行不匹配,它将忽略它。它使用积极的前瞻性来确保数字后面紧跟着
world

,这看起来很好,但是作为Regex的新手,你能不能给我一点启发,告诉我如何准确地使用你的代码?我不太懂Java,但你应该能够迭代这些行,使用regex测试该行是否匹配,并返回第一个捕获组。让我看一个例子。太好了,谢谢。我现在尝试一下这个逻辑,然后检查一下你的例子是否更有效。更新:通过将你的模式设置为字符串并使用匹配器,我能够得到我想要的结果,谢谢你的帮助!虽然这可以满足我的需要,但在文本文件中可能存在另一个3整数三元组,它不以“world”结尾(我不想要一个三元组),因此,我只需要那些行以“world”结尾的整数。@BbJug,上面修改过,非常好,谢谢。另一个答案产生了相同的结果,但是你能告诉我如何使用你的模式将整数三元组输入字符串数组吗?我对java不太了解,但在javascript:Update中:我对java的正则表达式做了更多的研究,并使用你的模式和一个匹配器的while循环来获得我想要的结果,谢谢你的回答!
((-?\d+(,\s)?)+)(?=,\sworld)\b