Python 正規表現ライブラリを使用して Wikipedia SQL ダンプを解析しようとしています。最終的な目標は、このダンプを PostgreSQL にインポートすることですが、事前に文字列のアポストロフィを 2 つにする必要があることはわかっています。
ただし、このダンプの文字列内のすべてのアポストロフィの前にはバックスラッシュがあり、バックスラッシュは削除したくありません。
(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)
それを壊します。
その人の車
その人の車のガソリン
ホッジスのハーブレース ハンドブック
(''''''''Hodges'''''''' Harbrace Handbook'''''''')
ポートピープル'''''''''''''',1475,29,0,0),(42,'''''''''''''''Thirty_Years\'' ''''''''''''''_戦争''''''''''''''',33,5,0,0)
ある種のループに陥っていませんか?使用する正しい正規表現コードは何ですか?
このスクリプトはウィキペディアの記事 (SQL インジェクション攻撃の例を含まない) のダンプを解析するためにのみ使用されるため、SQL インジェクション攻撃については考えていません。