gpt4 book ai didi

java - 需要正则表达式的说明(帮助)

转载 作者:行者123 更新时间:2023-12-01 19:06:22 26 4
gpt4 key购买 nike

好的,我有一个用空格分隔的短语。每个元素只能是整数或实数,最后两个元素除外,可以为字符串 null。我的正则表达式是

([0-9]*\.[0-9]*|[0-9]*) ([0-9]*\.[0-9]*|[0-9]*) ([0-9]*\.[0-9]*|[0-9]*) ([0-9]*\.[0-9]*|[0-9]*|null) ([0-9]*\.[0-9]*|[0-9]*|null)

我不明白这句话的原因

123 15 3 null null

最后一个 null 没有被捕获。有人提到了“/”的使用,并告诉我它们就像正则表达式的引号,但在我看来,添加它必须通过正则表达式搜索该字符串。我以这种形式编写正则表达式,因为我将其实现到 java 中,并且需要相应地分隔组或元素。

编辑:感谢大家的精彩回复。显然我需要更多练习,可能还需要一些 sleep !我的正则表达式现在看起来干净多了。

修改后的表达式

(\d+\.\d+|\d+) (\d+\.\d+|\d+) (\d+\.\d+|\d+) (\d+\.\d+|\d+|null) (\d+\.\d+|\d+|null)

最佳答案

这是由于您使用 * 修饰符定义您的或组的方式所致:

 ([0-9]*\.[0-9]*|[0-9]*|null)

通过上面的语句,[0-9]* 不可能匹配任何内容。如果可以的话,它将首先匹配。

当你连续有 2 个时:

([0-9]*\.[0-9]*|[0-9]*|null) ([0-9]*\.[0-9]*|[0-9]*|null)

现在强制匹配第一组中的“null”,但可以在第二组中不匹配任何内容。

如果您要将这些捕获组修改为:

([0-9]*\.[0-9]*|[0-9]+|null)

它们将无法再匹配“无”,并且会按照您想要的方式排列。

您也可以翻转它,并强制它在没有任何内容之前匹配“null”:

([0-9]*\.[0-9]*|null|[0-9]*)

关于java - 需要正则表达式的说明(帮助),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9918359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com