所以我需要匹配以下内容:

1.2.
3.4.5.
5.6.7.10


((\d+)\.(\d+)\.((\d+)\.)*)在第一行就可以了,但是问题是:可能有很多行:可能是一个或多个。

\n仅在多于一行的情况下出现。

在字符串版本中,我这样获得:"1.2.\n3.4.5.\n1.2."

所以我的问题是:如果只有一行,则\n不必在末尾,但是如果有多行,除了最后一行,每行的末尾都必须有\n

最佳答案

这是我建议的模式:

^\d+(?:\.\d+)*\.?(?:\n\d+(?:\.\d+)*\.?)*$


Demo

这是该模式的简要说明:

^                   from the start of the string
\d+                 match a number
(?:\.\d+)*          followed by dot, and another number, zero or more times
\.?                 followed by an optional trailing dot
(?:\n               followed by a newline
\d+(?:\.\d+)*\.?)*  and another path sequence, zero or more times
$                   end of the string

10-01 10:34