[英]Regex for variable declaration and initialization in c#
我想編寫一個正則表達式來從變量聲明語句中提取所有變量值及其名稱。 說我有
整數 i,k = 10,l=0
我想寫一個像 int\s^,?|(^,?)* 這樣的正則表達式,但這也將接受 k = 10 即(前面沒有 int)基本上的想法是如果字符串以 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
作為作業留下來刪除空格並修復最終的正則表達式。
以下是一些您可以使用的有用信息
嘗試這個:
^(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
您可以從 [C# Grammar]( http://msdn.microsoft.com/en-us/library/aa664812(VS.71).aspx)構建正則表達式。 但是構建一個解析器肯定會更好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.