正则表达式(java)-从有效负载中提取

正则表达式(java)-从有效负载中提取,java,regex,Java,Regex,000klkj1-041-3501-0071-00000KJH05601 56hj1 66553 78 546623 有效负载每次都遵循相同的结构,我试图找到位于3个空格(或3个空格?)之后的数值(在本例中为“78”)。数字(最多1或2个)将始终位于3个空格之后;这是多个有效载荷之间的唯一共同点。除了\d+,到目前为止我什么都没有。非常感谢您的帮助 很难理解您的问题,但如果您想获得3个空格后的数字,可以使用以下正则表达式: ^(?:\S*\s+){3}(\d+) 匹配信息: MATCH 1

000klkj1-041-3501-0071-00000KJH05601 56hj1 66553 78 546623


有效负载每次都遵循相同的结构,我试图找到位于3个空格(或3个空格?)之后的数值(在本例中为“78”)。数字(最多1或2个)将始终位于3个空格之后;这是多个有效载荷之间的唯一共同点。除了\d+,到目前为止我什么都没有。非常感谢您的帮助

很难理解您的问题,但如果您想获得3个空格后的数字,可以使用以下正则表达式:

^(?:\S*\s+){3}(\d+)

匹配信息:

MATCH 1
1.  [50-52] `78`
MATCH 2
1.  [114-116]   `78`

如果输入行由一组或多组空格分隔的字段组成,则使用
split
代替正则表达式可能是最简单的:

String[] fields = inputString.split("\\s+");

现在,
fields[0]
是第一个字段,
fields[1]
是第二个字段,依此类推,
fields[3]
应该可以满足您的需要。

我看不到您在解释结构。三个数字,四个字母,一个数字,破折号?八个字母数字,dash?三个数字,五个字母数字?提示:明确写出结构,我们会更好地提供帮助,尽管在练习中您可能已经回答了自己的问题。如果您不熟悉正则表达式,您可能需要查看
indexOf
。在这里显示的内容中,78出现在两个空格后,而不是三个空格后。你确定你的要求是对的吗?很抱歉,我没有解释清楚。有效载荷是胡言乱语。我试图找出前两个数字(在某些情况下,是一个数字),它们出现在第三个空格之后。第三个空格中的字母数字字符和字符串的长度随每个有效负载的不同而不同。这有帮助吗?再次表示歉意并感谢您(任何其他人)。这很有效,将帮助我以更直观的方式表达未来的问题。