我有一根绳子1.5(+1.2/-0.5)
。我想用Regex提取数值:{1.5, 1.2, 0.5}
.
我的计划是将字符串拆分为(
, +
, /
and -
。当我与(
and /
,它可以拆分,但是如果我还添加+
and -
,然后程序崩溃。
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:解析“(?=[(/+-)])”-[x-y]范围
相反的顺序
当正则表达式中的方括号内时,破折号是一个特殊字符。它的意思是一个范围:[a-z]
表示任意字符a
to z
。当你写下[(/+-)]
,这实际上意味着(
,或来自的任何字符+
to )
。该错误来自以下事实:在 ASCII 排序中)
出现在之前+
,所以一个字符范围[+-)]
是无效的。
要解决此问题,括号中的破折号必须始终位于第一个或最后一个,否则需要使用反斜杠。
我同意,我可能会使用全局正则表达式来挑选[0-9.]+
,而不是为了削减其他一切而分裂。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)