我有這樣的字符串:Java的正則表達式平衡括號
If ({{SQL}}.Employee.Title starts with 'Production')
and (substring of {{SQL}}.Employee.Title from '27' for '2' is not '30')
and ({{SQL}}.Employee.HireDate is greater than or equal to '2000-01-01 00:00:00.000')
then Pull {{SQL}}.Title, {{SQL}}.HireDate from Employee
從這個表情,我想找出圓括號是否正確平衡或不Java語言。
一種方法是創建一個計數器變量,一旦找到左括號並在遇到右括號時將其減一,計數器變量就會增加。根據結果,我可以決定結果。
但是,這不會幫助像()這樣的字符串,即括號內沒有任何字母數字字符。
有什麼方法可以確定圓括號是否平衡,並且這些括號之間應該有字母數字字符。 如果括號是空的,即在打開和關閉括號之間沒有字符,它應該會引發錯誤。
不要使用正則表達式,它會變得混亂。使用'Stack' – TheLostMind
使用堆棧,如何識別括號內的字母數字字符。 –
想一想。如果你得到一個左括號,然後將它推到堆棧上並將一個標誌設置爲true。因此,讀取的下一個元素不應該是右大括號(錯誤)。此外,所有在左大括號後面讀取的元素都應該是字母數字(請參閱https://stackoverflow.com/questions/12831719/fastest-way-to-check-a-string-is-alphanumeric-in-java) – TheLostMind