我有一个python应用程序,它使用SQLAlchemy搜索数据库,如下所示:
query = raw_input('Search: ')
db.session.query(Posts).filter(Posts.name.op('REGEXP')(r'[[:<:]]{}'.format(query))).all()
这适用于我的MySQL数据库和大多数字符,但我发现一些搜索不起作用。
(
但没有)
的搜索Б
,э
,д
或ц
等外来字符的搜索也会返回错误是否有支持各种搜索查询的解决方案,包括特殊字符和外来字符?感谢。
答案 0 :(得分:0)
在返回错误
后包含(不带)跟踪它的搜索
这种情况正在发生,因为(
和)
在正则表达式中具有特殊含义。例如,如果有一个没有结束符的左括号,则该表达式无效:
>>> re.compile(r"test (")
Traceback (most recent call last):
File "<console>", line 1, in <module>
...
error: unbalanced parenthesis
您需要 escape查询:
import re
query = re.escape(query)