zoukankan      html  css  js  c++  java
  • 解析sql中的表名

    最近的项目需求中需要解析sql得表名,由于只需要表名我觉得应该用相对粗暴一点的方式来解析

    初步思路:

    1.转义字符:去除两个引号连在一起的

    2.字符串: 去除所有被引号包裹的

    3.括号:识别括号处理

    4.关键字: 用关键字切割语句,去除与表名 无关的

    5.解析与表名有关的切割分段得表名

    先是粗暴的括号处理

    def get_str(s):
    you = 0
    st = []
    re = ''
    max_you = 0
    for ii in s:
    st.append(ii)
    while st:
    tmp = st.pop()
    re = tmp + re
    if tmp == ')':
    you += 1
    if max_you < you:
    max_you = you
    elif tmp == '(':
    you -= 1
    if you == 0:
    return [re, max_you]
    return [s, max_you]


    s = "(1,2,(a,b),3,4,(a,b,(0,c,s,1000),(1,a,1200),(2,1400),(3,1600),(4,1800),n,m),((sd,df),(sw,gt))t,b)"

    array = []
    array_level = []

    for ch in range(len(s)):
    if s[ch] == ')':
    next_str = get_str(s[:ch+1])
    while len(array_level) < next_str[1]:
    array_level.append([])
    array.append(next_str[0])
    array_level[next_str[1]-1].append(next_str[0])


    print array
    print '-' * 60
    for i in array_level:
    print i
  • 相关阅读:
    LOJ #6183 看无可看
    BZOJ 5467 Slay the Spire
    BZOJ 5306 [HAOI2018] 染色
    BZOJ 2784 时间流逝
    BZOJ4911: [Sdoi2017]切树游戏
    min-max 容斥
    BZOJ 5475: [WC 2019] 数树
    BZOJ 2810 [Apio2012]kunai
    Codeforces round 1083
    详解大数据数据仓库分层架构
  • 原文地址:https://www.cnblogs.com/jt-huang/p/5817352.html
Copyright © 2011-2022 走看看