这个问题来自于https://stackoverflow.com/a/53750697/856090的答案。
我们收到一个“输入”字符串。
输入字符串通过\s+\+\s+
正则表达式中的+
分成多个“命令”。但是在拆分时,应忽略引用的+
(\+
)。
然后,每个命令通过空格字符分成多个“参数”,但是引用的(\
)空格不计入拆分,并且成为参数的一部分。
引用的\
(即\\
)变成常规字符\
,并且本身不参与引用。
我的解决方案是逐个字符处理输入字符串,并对\
、+
和空格字符进行特殊处理。这很慢且不优雅。我寻求另一种解决方案(例如使用正则表达式)。
我用Python 3编写。
例如,
filter1 + \
chain -t http://www.w3.org/1999/xhtml -n error + \
transformation filter2 --arg x=y
转换过滤器3
变成
[['filter1'],
['chain', '-t', 'http://www.w3.org/1999/xhtml', '-n', 'error'],
['transformation', 'filter2', '--arg', 'x=y']]
并且
a \+ b + c\ d
变成
[['a', '+', 'b'], ['c d']]
[['a', '+', 'b'], ['c d']]
而不是[['a', '+', 'b'], ['c', 'd']]
,那该怎么办呢?实际上,在第一次分割操作后,两者都包含空格分隔符,或者我们需要传递额外的参数来进行这种操作。我也尝试过获得第二个结果,我成功了,但对于第一个结果失败了,所以我猜想我们可能需要额外的参数来解决这个问题。因此,如果你愿意或者我的建议输出可以的话,我会进行编辑或者尝试其他方法来解决。谢谢。 - hygull