我正在尝试使用 boost 和 regex 实现一个 c++ 解析器。我需要能够解析如下语句:
parameters a1=bbb b a2=bbb b a3 =bbb
parameters a4=b a5=bb
parameters a6=b a7=[b b b] aa8=b b b
对于此输入,所需的参数将是:
a1=bbb b
a2=bbb b
a3 =bbb
a4=b
a5=bb
a6=b
a7=[b b b]
aa8=b b b
其中 a 和 b 可以是以下任何字符:A-Za-z0-9çÇñÑáÁéÉíÍóÓúÚ@%_\,;:|/&()-+*^.<> 或以下模式:(==)(<= )(>=) 参数的名称不允许有空格,但值可以。
我正在尝试下面的代码,但它不能正常工作:
[A-Za-z0-9çÇñÑáÁéÉíÍóÓúÚ@%\_\\\,\;\:\|\/\&\(\)\-\+\*\^\.(==)\>\<(\<=)(\>=)]+\s*=\s*([\sA-Za-z0-9çÇñÑáÁéÉíÍóÓúÚ@%\_\\\,\;\:\|\/\&\(\)\-\+\*\^\.(==)\>\<(\<=)(\>=)]+(?!(([\sA-Za-z0-9çÇñÑáÁéÉíÍóÓúÚ@%\_\\\,\;\:\|\/\&\(\)\-\+\*\^\.(==)\>\<(\<=)(\>=)]+)?\s*=\s*[\sA-Za-z0-9çÇñÑáÁéÉíÍóÓúÚ@%\_\\\,\;\:\|\/\&\(\)\-\+\*\^\.(==)\>\<(\<=)(\>=)]+))|[A-Za-z0-9çÇñÑáÁéÉíÍóÓúÚ@%\_\\\,\;\:\|\/\&\(\)\-\+\*\^\.(==)\>\<(\<=)(\>=)]+|(\[[\sA-Za-z0-9çÇñÑáÁéÉíÍóÓúÚ@%\_\\\,\;\:\|\/\&\(\)\-\+\*\^\.(==)\>\<(\<=)(\>=)]+\]))
图案
[A-Za-z0-9çÇñÑáÁéÉíÍóÓúÚ@%\_\\\,\;\:\|\/\&\(\)\-\+\*\^\.(==)\>\<(\<=)(\>=)]+\s*=\s*([A-Za-z0-9çÇñÑáÁéÉíÍóÓúÚ@%\_\\\,\;\:\|\/\&\(\)\-\+\*\^\.(==)\>\<(\<=)(\>=)]+|(\[[\sA-Za-z0-9çÇñÑáÁéÉíÍóÓúÚ@%\_\\\,\;\:\|\/\&\(\)\-\+\*\^\.(==)\>\<(\<=)(\>=)]+\]))
只要值不包含空格就可以工作。请你帮助我好吗?
提前致谢