正则表达式分组不返回值

问题描述 投票:1回答:1

我正在尝试从字符串中获取一些命名的组(X,Y,Z,W,P,R),但是在获取输出时遇到了问题。

这是字符串中包含我要提取的信息的部分:

[1,1] = Group: 1   Config:
X:  -196.999   Y:   1009.999   Z:  210.342
W:  90   P:   0   R:  90

我尝试使用以下方法获取值

@"(?<X>(?<=X:\s*)([+-]?\d*(\.\d+)?))
  (?<Y>(?<=Y:\s*)([+-]?\d*(\.\d+)?))
  (?<Z>(?<=Z:\s*)([+-]?\d*(\.\d+)?))
  (?<W>(?<=W:\s*)([+-]?\d*(\.\d+)?))
  (?<P>(?<=P:\s*)([+-]?\d*(\.\d+)?))
  (?<R>(?<=R:\s*)([+-]?\d*(\.\d+)?))"

但是我没有任何值。

仅当使用@"(?<X>(?<=X:\s*)([+-]?\d*(\.\d+)?)(?=\s*Y:))"时,我才能获得X组的正确值。

但是此

@"(?<X>(?<=X:\s*)([+-]?\d*(\.\d+)?)(?=\s*Y:))
  (?<Y>(?<=Y:\s*)([+-]?\d*(\.\d+)?)(?=\s*Z:))"

也没有给我任何值。

最终匹配的Config:\s*也将起作用,当我尝试此操作时>>

@"(?<=Config:\s*)(?<X>(?<=X:\s*)([+-]?\d*(\.\d+)?)(?=\s*Y:))"

我没有价值,但是有

@"(?<=:\s*)(?<X>(?<=X:\s*)([+-]?\d*(\.\d+)?)(?=\s*Y:))"

所以,A)我不明白为什么我需要先行(?=\s*Y:)来获得值

B)如果添加另一个组,为什么会失败?

C)为什么我不匹配Config?

有人可以向我解释我在这里做错了什么吗?

我正在尝试从字符串中获取一些命名的组(X,Y,Z,W,P,R),但是在获取输出时遇到了问题。这是字符串中包含我要提取的信息的部分:[1,1] = ...

c# regex
1个回答
0
投票

我建议您尝试查找每个字母标签及其关联的浮点值的不同方法:

© www.soinside.com 2019 - 2024. All rights reserved.