我在行中有字符串,具有以下模式。
1) '"foo": [a, b, c]'
2) '"foo": [aa, c]'
3) '"foo": [aaaa]'
4) '"foo": [b, c, a]'
5) '"foo": [ba, ca, a1234aaa]'
我需要找到具有字符a和only且仅包含字符a(不是aa或aaaa)的行数。 [答案是2排。行数1和行数4]
逻辑:前面有零或一个[空格]且以零或一个[逗号]结尾的字符
我做了:
likestr = '"foo": [%a%]'
query = db.session.query(X).filter(X.Y.like('%'+likestr+'%'))
显然,这会将count返回为4,而正确的答案是2我的查询在正则表达式中会如何显示?
答案 0 :(得分:1)
这很简单,没有正则表达式。以下内容可行(SQL Fiddle):
SELECT *
FROM MyTable
WHERE MyField like '%[a,%'
OR MyField like '%, a,%'
OR MyField like '%, a]%'
或者,如果你想要正则表达式(SQL Fiddle):
SELECT *
FROM MyTable
WHERE MyField REGEXP '\\[a, |, a,|, a\\]';