我想寫一個RegEx從變量聲明語句中提取所有變量值及其名稱。說我有用於c中變量聲明和初始化的正則表達式#
INT I,K = 10,L = 0
我想寫一個正則表達式的東西如int \ S ^,?|(^ ,?)* 但是這也將接受 ķ = 10,即(不INT在它之前) 基本思路是 如果字符串以整數,那麼 獲得通過分隔的變量列表,
我知道提取CSV值,但在這裏我的字符串具有一定的初值爲好。我該如何解決它?
我想寫一個RegEx從變量聲明語句中提取所有變量值及其名稱。說我有用於c中變量聲明和初始化的正則表達式#
INT I,K = 10,L = 0
我想寫一個正則表達式的東西如int \ S ^,?|(^ ,?)* 但是這也將接受 ķ = 10,即(不INT在它之前) 基本思路是 如果字符串以整數,那麼 獲得通過分隔的變量列表,
我知道提取CSV值,但在這裏我的字符串具有一定的初值爲好。我該如何解決它?
開始思考一個定義,說的結構,
(a line can start with some spaces) followed by,
(Type) followed by
(at least one space)
(variable_1)
(optionally
(comma // next var
|
'='number // initialization
) ...`
然後嘗試給每個組轉換:
^ \s* \w+ \s+ \w+ ? (',' | '=' \d+ ) ...
line some type at least var optionally more or init some
start spaces (some chars) one space (some chars) vars val digits
左功課,除去空間和修復了最後的正則表達式
你可以建立起來,從[C#語法]正則表達式(http://msdn.microsoft.com/en-us/library/aa664812(VS.71).aspx)。但是建立一個解析器肯定會更好。
一些有用的信息,試試這個:
^(int|[sS]tring)\s+\w+\s*(=\s*[^,]+)?(,\s*\w+\s*(=\s*[^,]+)?)*$
它會按您的示例代碼
int i,k = 10,l=0
並作出一些假設關於您可能使用或可能不使用的語言,它也會匹配:
int i, j, k=10, l=0
string i=23, j, k=10, l=0