正则表达式字符串仅保留具有某些不同条件的行 java
Regex string to only keep lines with certain varying criteria java
我有一个文本文件,我想从中每行提取 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。
目前我有以下粗略的代码,但在改进文本文件以仅包含具有所需整数的那些行(无效过程)后可以工作:
String all = new String(Files.readAllBytes(Paths.get("loc.txt")));
all = all.replace("[17:30:23] [Client thread/INFO]: [CHAT] ", "");
all = all.replace(", world", "");
all = all.replace(" ", "");
locArray = all.split("\r?\n");
这只会将 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
https://regex101.com/r/yB9hX2/3
它匹配以逗号分隔的数字,包括负数,直到 world
。如果一行不匹配,它会忽略它。它使用正向前瞻来确保数字后跟 world
.
我有一个文本文件,我想从中每行提取 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。
目前我有以下粗略的代码,但在改进文本文件以仅包含具有所需整数的那些行(无效过程)后可以工作:
String all = new String(Files.readAllBytes(Paths.get("loc.txt")));
all = all.replace("[17:30:23] [Client thread/INFO]: [CHAT] ", "");
all = all.replace(", world", "");
all = all.replace(" ", "");
locArray = all.split("\r?\n");
这只会将 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
https://regex101.com/r/yB9hX2/3
它匹配以逗号分隔的数字,包括负数,直到 world
。如果一行不匹配,它会忽略它。它使用正向前瞻来确保数字后跟 world
.