可能是一个正则表达式问题(请原谅我破碎的英语)。
我需要识别以某个值开头的子字符串。
例如,请使用以下字符串:
“从user.table1内部联接user.table2中选择1 ...”
我需要提取所有以“user”开头并以“blank space”结尾的单词。因此,在将此“未知”正则表达式应用于上述字符串后,它将产生以下结果:
表1 表2
我尝试使用“re.findall”函数,但找不到指定开始和结束模式的方法。
那么,如何使用起始模式提取子字符串?
答案 0 :(得分:1)
尝试积极的观察:
import re
pattern=r'(?<=user\.)(\w+)?\s'
string_1="Select 1 from user.table1 inner join user.table2 ..."
match=re.findall(pattern,string_1)
print(match)
输出:
['table1', 'table2']
正则表达式信息:
(?<=user\.)(\w+)?\s
`Positive Lookbehind` `(?<=user\.)` Assert that the Regex below matches user matches the characters user literally (case sensitive) \. matches the character . literally (case sensitive) 1st Capturing Group (\w+)? ? Quantifier — Matches between zero and one times, as many times as possible, giving back as needed (greedy) \w+ matches any word character (equal to [a-zA-Z0-9_])
如果该模式不起作用,请尝试:(?<=user\.)\w+
答案 1 :(得分:0)
你可以这样试试:
re.findall(r'\buser\.(..*?)\b',
"Select 1 from user.table1 inner join user.table2...")
这将返回:
['table1', 'table2']