【发布时间】:2021-01-19 09:30:57
【问题描述】:
切换命令可以如下使用:
toggle
toggle n
toggle >hotspot y
toggle >hotspot
toggle @location>hotspot n
toggle @location>hotspot
我现在的正则表达式如下:
^toggle(?>\s(?>@(?'location'\w+))?(?>>(?'hotspot'\w+))?)?(?>\s(?'value'n|y))?$
然而,这一个允许以下字符串匹配:
toggle @location
toggle @location n
我希望仅当命名组“热点”(以“>”为前缀)匹配时才允许命名组“位置”(以“@”为前缀)。
【问题讨论】:
-
热点不应该是可选的
^toggle(?>\s(?>@(?'location'\w+))?(?>>(?'hotspot'\w+)))?(?>\s(?'value'[ny]))?$regex101.com/r/Vb1xHE/1 -
你说得对,其实超级简单!如果热点是在价值之后呢?我的意思是,只有当前缀+命名组匹配时才允许组?
-
在这种情况下,您可以使用肯定的前瞻断言来确保字符串至少包含您需要的内容。然后,我认为您可以将其他组设为可选。
-
我认为这是一个很好的例子来调查你是否真的需要一个正则表达式。
标签: c# regex regex-group