【发布时间】:2019-02-08 08:42:37
【问题描述】:
尝试使用正则表达式解析字符串中的参数:"-a 1 -b -5.1"。
输出应该有 2 个带有值的标志:标志 a 带有值 1,b 带有 -5.1。
当我尝试(-(?<flag>[a-zA-Z])(?<value> .+)?(?!-[a-zA-Z]))* 正则表达式时,它只返回标志a 和值1 -b -5.1。
为什么不停在-b?
【问题讨论】:
-
为什么不拆分空间``(到
{"-a", "1", "-b", "-5.1"})然后将偶数项视为名称而奇数项视为值? -
@DmitryBychenko 只是猜测,值可能包含空格。
-
@DmitryBychenko 从 OP 对正则表达式的尝试来看,每当看到
-[a-zA-Z]时,这将是一个新标志的开始。 -
@DmitryBychenko 在我的情况下,标志可能没有价值。这就是为什么连物品都行不通的原因。而且,正如@Sweeper 所说,
-b应该被视为新标志的开始。
标签: c# regex regex-lookarounds