我有一些MS Word文档,我已将整个内容传输到SQL表中.
内容包含许多方括号和大括号,例如
[{a} as at [b],] {c,} {d,} etc
我需要检查以确保括号是平衡/匹配的,例如以下内容应返回false:
- [{a} as at [b], {c,} {d,}
- ][{a} as at [b], {c,} {d,}
- [{a} as at [b],] {c,} }{d,
到目前为止我所做的是提取所有括号并将它们的信息存储到SQL表中,如下所示:
(段号,支架类型,支架位置,支架水平)
3 [ 8 1
3 ] 18 0
3 [ 23 1
3 ] 35 0
7 [ 97 1
7 ] 109 0
7 [ 128 1
7 { 129 2
7 } 165 1
7 [ 173 2
7 ] 187 1
7 ] 189 0
7 { 192 1
7 } 214 0
7 { 216 1
7 } 255 0
7 { 257 1
7 } 285 0
7 { 291 1
7 } 326 0
7 { 489 1
7 } 654 0
我不确定算法将如何工作来检查括号在每个段落中是否平衡,并在不是时给出错误消息.
任何意见,将不胜感激!
编辑:
代码也需要适用于以下场景;
(段号,支架类型,支架位置,支架水平)
15 [ 543 1
15 { 544 2
15 } 556 1
15 [ 560 2
15 ] 580 1
15 ] 581 0
15 [ 610 1
15 ] 624 0
15 [ 817 1
15 ] 829 0
最佳答案 这必须在sql server上吗?
一个简单的解决方案是使用通用语言并使用堆栈.
>逐个字符地读取字符串
>如果遇到一个开口支撑,请将其推入堆叠状态.
>如果你遇到一个右大括号弹出.
如果匹配所有括号
>完全读完段落后,堆栈为空.
除非在此过程中发生以下其中一项
>你必须弹出一个空堆栈
>弹出的括号与结束括号不匹配
使用正则表达式匹配括号不是一个好主意,它们不应该像那样使用