0

我正在尝试解析以下字符串,即使它非常基本,也无法完全正确地获取正则表达式。我认为我的可选分组语法错误。数据可以是以下之一:

PV{X}
PV{X.X}
PV{X.X.X}
PV{X.X.X.X}

使用:

^PV\{\d+(\.\d+){0, 3}\}$

在哪里:

  • PV 是恒定的。
  • 花括号将始终存在。
  • X 是一个正整数(一位或多位)。
  • 可以存在多个 X 值(最小 1,最大 4),用点分隔。
4

2 回答 2

4

好的,所以这个正则表达式会为你做:

PV\{(\d+?(?:\.\d+){0,3})\}

这是一个正则表达式 101来证明它。

差异?

首先,你有{0, 3},所以它认为这是一个要匹配的字面值。你只需要在那里摆脱它{space}。接下来,可能出现的可选组,0 - 3我在其中放置了一个?:,因此它实际上并没有捕获该组。最后,我将实际值包装在内部,{ }以便将其分组。您可能想更改一些分组,但这肯定会在适当的时候为您匹配整个字符串。

于 2013-10-11T12:59:12.687 回答
0

考虑以下正则表达式...

PV{\d{1,4}(.\d{1,4})*}

于 2013-10-11T13:19:53.823 回答