[英]Regex to capture all import statements
我想創建一個查看Python文件並查找所有import
語句的腳本。 可能的變化如下:
import os
import numpy as np
from itertools import accumulate
from collections import Counter as C
from pandas import *
通過觀察這些,可以說邏輯應該是:
給我所有的<foo>
從from <foo>
語句和那些<bar>
從import <bar>
未通過之前from <foo>
為了在正則表達式中翻譯上述內容,我寫道:
from (\w+)|(?<!from \w+)import (\w+)
問題似乎是負面觀察的非固定寬度,但我似乎無法修復它。
編輯:
作為獎勵,捕獲多個包含也是很好的,如:
import sys, glob
看起來你只想從一行的開頭提取匹配項,同時考慮到前導空格。
你可以考慮使用
^\s*(?:from|import)\s+(\w+(?:\s*,\s*\w+)*)
請參閱正則表達式演示 。
細節
^
- 字符串的開頭(使用re.M
也匹配行的開頭) \\s*
- 0+空格(使用[^\\S\\r\\n]*
僅匹配水平空格) (?:from|import)
- 兩個單詞中的任何一個 \\s+
- 1+個空格 (\\w+(?:\\s*,\\s*\\w+)*)
- 1個以上字字符,接着用0+ 0+的空格出現, ,
,0 +空格然后1+字字符。 在Python中,您可以稍后使用re.split(r'\\s*,\\s*', group_1_value)
拆分Group 1值,以獲取單獨的逗號分隔模塊名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.