首页 > 解决方案 > 在两个文字python之间匹配正则表达式

问题描述

给定:

s = "SELECT * FROM THIS_TABLE WHERE COL='123'"

从 sql 查询中返回表名,该表名始终在 'FROM' 和 'WHERE' 之间

我尝试过的正则表达式什么都不返回:

re.search('FROM\s+(.*)\s+WHERE', s.upper())

预期输出:

'THIS_TABLE'

标签: pythonregex

解决方案


实际上,您需要使用双引号,这样查询中的单引号就不会被解释。此外,您可以在字符串前面添加 'r' 以让 python 将其解释为 litteral。

您的结果是一个 re.Match 对象,其中的元素包含您要搜索的内容。

这是一个工作副本:

s = r"SELECT * FROM THIS_TABLE WHERE COL='123'"
result = re.search('FROM\s+(.*)\s+WHERE', s.upper())[1]
print(result)

打印“THIS_TABLE”


推荐阅读