在python正则表达式中提取字符前后的两个单词

在python正则表达式中提取字符前后的两个单词,python,regex,Python,Regex,我试图在python正则表达式中的某个字符[例如点]前后提取两个字符串 我尝试提取点后的表名,但无法提取数据库名 编辑:查询变量中可能有多个点,但我想提取第一个匹配项 import re query = 'select * from xxx.yyy' table_name = re.search('\.(.*)\s', query).group(1).split(" ",2)[0] print table_name 输出: yyy 我希望输出是xxx.yyy或者可以在列表中也可以,比如[xx

我试图在python正则表达式中的某个字符[例如点]前后提取两个字符串

我尝试提取点后的表名,但无法提取数据库名

编辑:查询变量中可能有多个点,但我想提取第一个匹配项

import re
query = 'select * from xxx.yyy'
table_name = re.search('\.(.*)\s', query).group(1).split(" ",2)[0]
print table_name
输出:

yyy
我希望输出是xxx.yyy或者可以在列表中也可以,比如[xxx,yyy]

感谢您的帮助。谢谢。

使用模式'\w+\.\w+'

例:

输出:


这在学习正则表达式和测试正则表达式时非常方便

这个正则表达式应该解决您的问题[A-Za-z]+\[A-Za-z0-9]+ A-Z-捕获大写字母 a-z-捕捉小写字母 0-9-捕获数量


希望这对你有帮助

太棒了,这很管用。你能解释一下吗code@MohanramKrishnan. \w+->至少匹配一个字母数字字符和下划线。因此,上面的正则表达式将查找点字母数字或之前和之后的字母数字字符underscore@Rakesh,谢谢你的解释。我假设这段代码是有效的,即使我们在查询字符串中有多个点,它也只提取第一个匹配项。我试过了,它提取出了第一个oocurrence。只是确定一下。
import re
query = 'select * from xxx.yyy'
table_name = re.search('(\w+)\.(\w+)', query)
print table_name.groups()
#or
print re.search('((\w*)\.(\w*))', query).group(0)
('xxx', 'yyy')
xxx.yyy