如何用正则表达式判断括号配对的正确性?
- VB code
Sub fff() Dim oReg As RegExp 'As VBScript_RegExp_55.RegExp Set oReg = New RegExp With oReg .Pattern = "^((0|[1-9][0-9]*)([-+*/](0|[1-9][0-9]*))*[-+*/]?)*(((\()((0|[1-9][0-9]*)+([+*/-](0|[1-9][0-9]*))*)+[-+*/]?)+((\))([-+*/](0|[1-9][0-9]*)[-+*/]?)*)+)*((0|[1-9][0-9]*)([-+*/](0|[1-9][0-9]*))*)*$" s = "1+6*(2+(3-1)/1+(9-5*1))))" Debug.Print .Test(s) End WithEnd Sub
问题是不管正确与否,Debug.print .
s = "1+6*(2+(3-1)/1+(9-5*1))"
s = "1+6*(2+(3-1)/1+(9-5*1)"
s = "1+6*(2+(3-1)/1+(9-5*1))))"
Debug.Print oReg.Test(s)的结果总是True
***********************
程序依据JS的括号配对问题
http://topic.csdn.net/u/20090719/22/84ecbe48-2bab-4d7f-8222-3cb7f232a451.html?seed=308770229&r=79188478#r_79188478
请问,各位高手正则表达式如何判断括号配对的正确性。谢谢。
[解决办法]
学习中,正则总写不对咯,不过你应该像HTML那样成对描述.
[解决办法]
[解决办法]
正则表达式不是万能的。
有限状态自动机是万能的。
参考
《编译原理》词法分析 有限状态自动机
[解决办法]