我正在尝试使用 Python 正则表达式库解析 Wikipedia SQL 转储。最终目标是将这个转储导入 PostgreSQL,但我知道字符串中的撇号需要事先加倍。
但是,此转储中字符串中的每个撇号前面都有一个反斜杠,我宁愿不删除反斜杠。
(42,'Thirty_Years\'_War',33,5,0,0)
使用命令
re.match(".*?([\w]+?'[\w\s]+?).*?", line)
当从文本文件中解析 'line' 时,我无法识别 'Thirty_Years\'_War' 中间的撇号。
作为比较,这些行在解析时工作正常(没有最后一行)。
该人的车
人的车的汽油
霍奇斯的哈布雷斯手册
'霍奇斯'哈布雷斯手册'
港口人',1475,29,0,0),(42,'Thirty_Years\'_War',33,5,0,0)
正确和预期的输出(没有最后一行):
人的车
人的车的汽油
霍奇斯的哈布雷斯手册
('霍奇斯''哈布雷斯手册')
港口人',1475,29,0,0),(42,'Thirty_Years\'_War',33,5,0,0)
使用命令
re.match(".*?([\w\\]+?'[\w\s]+?).*?", line)
打破它。
人的车
人''''车''''汽油
霍奇斯的哈布雷斯手册
(''''''''霍奇斯''''''''哈布雷斯手册'''''''')
港口人''''''''''''''',1475,29,0,0),(42,''''''''''''''''Thirty_Years\'' ''''''''''''''_War''''''''''''''',33,5,0,0)
它是否陷入某种循环?要使用的正确正则表达式代码是什么?
我没有考虑 SQL 注入攻击,因为该脚本仅用于解析维基百科文章的转储(不包含 SQL 注入攻击的示例)。