gpt4 book ai didi

c# - Regex.Split 加号和减号

转载 作者:行者123 更新时间:2023-11-30 19:45:28 24 4
gpt4 key购买 nike

我有一个字符串 1.5(+1.2/-0.5)。我想使用 Regex 来提取数值:{1.5, 1.2, 0.5}

我的计划是用 (+/- 拆分字符串。当我这样做时用(/拆分,它拆分OK,但如果我还添加+-,然后程序崩溃.

string[] foo = Regex.Split("1.5(+1.5/-0.5)", @"(?=[(/)])");
// OK

string[] foo = Regex.Split("1.5(+1.5/-0.5)", @"(?=[(/+-)])");
// Exception catched

捕获到的异常是:

System.ArgumentException: parsing "(?=[(/+-)])" - [x-y] range in reverse order

最佳答案

破折号在正则表达式的方括号内是一个特殊字符。表示一个范围:[a-z]表示从az的任意字符。当你写[(/+-)]时,它实际上意味着(,或者从+的任何字符)。错误来自这样一个事实,即在 ASCII 排序中 ) 出现在 + 之前,因此字符范围 [+-)] 无效。

要解决此问题,括号中的破折号必须始终位于最前面或最后,否则需要反斜杠。

我同意,我可能会使用全局正则表达式来挑选出 [0-9.]+,而不是拆分来削减其他所有内容。

关于c# - Regex.Split 加号和减号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10547824/

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