Sql 使用RegExp(PREG)提取函数参数
考虑以下函数参数(它们已从函数中提取): 是否有一种方法可以提取参数,以使用regexp和剥离空格获得以下数组输出:Sql 使用RegExp(PREG)提取函数参数,sql,regex,pcre,Sql,Regex,Pcre,考虑以下函数参数(它们已从函数中提取): 是否有一种方法可以提取参数,以使用regexp和剥离空格获得以下数组输出: [Monkey, "Blue Monkey", "Red, blue and \"Green'", 'Red, blue and "Green\''] 我无法使用此RegExp,它的权限不够: /(("[^"]+"|[^\s,]+))/g 不确定您到底在寻找什么,也不知道如何在SQL中实现这一点,但这样做还不够: (以python为例) 不确定您到底在寻找什么,也不知道如何在
[Monkey, "Blue Monkey", "Red, blue and \"Green'", 'Red, blue and "Green\'']
我无法使用此RegExp,它的权限不够:
/(("[^"]+"|[^\s,]+))/g
不确定您到底在寻找什么,也不知道如何在SQL中实现这一点,但这样做还不够: (以python为例)
不确定您到底在寻找什么,也不知道如何在SQL中实现这一点,但这样做还不够: (以python为例)
这看起来有点恶心,但它起作用了:
/(?:"(?:[^\x5C"]+|\x5C(?:\x5C\x5C)*[\x5C"])*"|'(?:[^\x5C']+|\x5C(?:\x5C\x5C)*[\x5C'])*'|[^"',]+)+/g
我使用了\x5C
而不是简单的反斜杠字符\
,因为太多的反斜杠字符可能会让人困惑
此正则表达式由以下部分组成:
“(?:[^\x5C”]+\x5C(?:\x5C\x5C)*[\x5C”])*”
匹配双引号字符串声明“(?:[^\x5C']+\x5C(?:\x5C\x5C)*[\x5C'])*”
匹配单引号字符串声明[^”',]+
匹配任何其他内容(逗号除外)“(?:[^\x5C”]+\x5C(?:\x5C\x5C)*[\x5C”])*”
的部分是:
[^\x5C”]+
匹配除退格和引号字符以外的任何字符\x5C(?:\x5C\x5C)*[\x5C”]
匹配正确的转义序列,如\“
,\\\
,\\\\”
等这看起来有点恶心,但它起作用了:
/(?:"(?:[^\x5C"]+|\x5C(?:\x5C\x5C)*[\x5C"])*"|'(?:[^\x5C']+|\x5C(?:\x5C\x5C)*[\x5C'])*'|[^"',]+)+/g
我使用了\x5C
而不是简单的反斜杠字符\
,因为太多的反斜杠字符可能会让人困惑
此正则表达式由以下部分组成:
“(?:[^\x5C”]+\x5C(?:\x5C\x5C)*[\x5C”])*”
匹配双引号字符串声明“(?:[^\x5C']+\x5C(?:\x5C\x5C)*[\x5C'])*”
匹配单引号字符串声明[^”',]+
匹配任何其他内容(逗号除外)“(?:[^\x5C”]+\x5C(?:\x5C\x5C)*[\x5C”])*”
的部分是:
[^\x5C”]+
匹配除退格和引号字符以外的任何字符\x5C(?:\x5C\x5C)*[\x5C”]
匹配正确的转义序列,如\“
,\\\
,\\\\”
等此regexp不适用于未用空格分隔的项。很抱歉,忘了提及它。只需将“,\s+”更改为“,\s*”以使间距选项此regexp对未用空格分隔的项目无效。很抱歉,忘了提及。只需将“,\s+”更改为“,\s*”即可选择间距
/(?:"(?:[^\x5C"]+|\x5C(?:\x5C\x5C)*[\x5C"])*"|'(?:[^\x5C']+|\x5C(?:\x5C\x5C)*[\x5C'])*'|[^"',]+)+/g