如果我正在针对此命令行应用程序使用以下方案,则正在构建...
update DIFFICULTY=1 DESCRIPTION="some long run on description"
我想捕获DIFFICULTY=1
,并且想将DESCRIPTION="some long run on description"
捕获为两个单独的组,如果最终我在api上添加了更多的内容(可能是另一个DESCRIPTION
字段),我将如何使用正则表达式进行操作。套管在左侧没什么大碍。
到目前为止,我已经掌握了这一点,但是它并没有包含全部引用的描述文字,也没有将将来可能出现的其他描述字段分开。
/([A-Z])([\w="])+/g
我正在使用.NET核心正则表达式库将其视为FYI,以防js正则表达式中有任何麻烦。
答案 0 :(得分:1)
是的,可以使用正则表达式,但是看起来像这样:
(?<=\s)(\w+=(?:"(?:(?<=\\)"|[^"])+"|[\S]+))
尽管不是所有问题都可以使用正则表达式解决,但我建议您在评论中看到link提供的LocEngineer。
答案 1 :(得分:0)
您可以使用条件正则表达式:
\b(?P<key>[A-Z]+)=(")?(?P<value>(?(2)[^"]*|\S+))
\b # a word boundary
(?P<key>[A-Z]+) # only UPPERCASE letters -> group "key"
= # =
(")? # capture quotes if they are present
(?P<value> # start group "value"
(?(2)[^"]* # if quotes were present, match anything up to new quotes
| # ... or ...
\S+) # anything not a whitespace, 1+ times
)