簡體   English   中英

正則表達式捕獲所有import語句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM