간단한 SQL 구문 분석기를 작성하여 SQL 문을 기본 부분으로 분리하려고합니다. 그러나 중첩 된 쿼리에 문제가 있습니다. 여기VBScript RegExp Greedy 충분하지 않습니다.
sql = "select * from Customers where id in (select customer_id from Orders where 1=1)"
Set re = New RegExp
re.IgnoreCase = True
re.Pattern = "^(.*)\swhere\s(.*)$"
re.Global = True
Set matches = re.Execute(sql)
If matches.count > 0 Then
Set submatches = matches(0).Submatches
where_part = Trim(submatches(1))
everything_else = Trim(submatches(0))
End If
Response.Write where_part & "<br>"
Response.Write everything_else & "<br>"
, 내가 where_part가와 EVERYTHING_ELSE 포함 "고객 SELECT * FROM"을 "(1 = 1이 주문에서 CUSTOMER_ID 선택)에서 ID"를 포함 할 : 예를 가장 잘 보여줍니다. 즉, 나는 그것이 가능한 한 탐욕스럽고, 두 번째 (. *)는 탐욕스럽고 첫 번째는 사심없는 욕심을 갖기를 바란다. 다른 방법으로 말하자면, everything_else가 어디에 들어 있지 않았 으면합니다.
그러나, 나는 "고객 SELECT * FROM 곳에서 ID (주문에서 CUSTOMER_ID을 선택"EVERYTHING_ELSE = 얻고 where_part = "1 = 1)"
나는 비 정규 표현식 문자열을 혼란에 의지하지 않고이 문제를 해결할 수있는 방법 파싱?
완벽하게 작동합니다. –