gpt4 book ai didi

.NET 正则表达式捕获的顺序不符合预期

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

在 .NET 中,正则表达式并没有像我期望的那样组织捕获。 (我不会将此称为错误,因为显然有人打算这样做。但是,这不是我期望它工作的方式,也不是我发现它有帮助的方式。)

此正则表达式用于配方成分(为了示例而简化):

(?<measurement>           # begin group
\s* # optional beginning space or group separator
(
(?<integer>\d+)| # integer
(
(?<numtor>\d+) # numerator
/
(?<dentor>[1-9]\d*) # denominator. 0 not allowed
)
)
\s(?<unit>[a-zA-Z]+)
)+ # end group. can have multiple

我的字符串: 3 tbsp 1/2 tsp
结果组和捕获:

[measurement][0]=3 tbsp
[measurement][1]= 1/2 tsp
[integer][0]=3
[numtor][0]=1
[dentor][0]=2
[unit][0]=tbsp
[unit][1]=tsp



请注意即使 1/2 tsp在第二次捕获中,它的部分在 [0]因为这些地方以前没有使用过。

有没有办法让所有部分都具有可预测的有用索引,而不必再次通过正则表达式重新运行每个组?

最佳答案

似乎您可能需要遍历输入,一次匹配一个测量值。然后,在该测量的循环迭代期间,您将可以可预测地访问该测量的各个部分。

关于.NET 正则表达式捕获的顺序不符合预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3534780/

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