我如何解析以下内容?
data (DIR1:input bit;
DGG2:input bit;
OENEG1:input bit;
OE_NEG2:input bit;
A1:inputoutput bit_vector(1 to 9);
A2,H5,J7:inputoutput bit_vector(1 to 9);
B1,E4,Y7:inputoutput bit_vector(1 to 9);
B2:inputoutput bit_vector(1 to 9);
TGY:output bit;
THHH, Tff, TsD:input bit);
我希望字典中的输出如下所示
Dictionary<string,string> l_dictData = new Dictionary<string,string>();
解析后,l_dictData
应填充结果:
l_dictData["inputbit"] = "DIR1,DGG2,OENEG1,OE_NEG2,THHH,Tff,TsD";
l_dictData["inputoutputbit"] = "A1(1),A1(2),....,A1(9)A2(1),A2(2)....A2(9),H5(1)....H5(9),J7(1),...J7(9),B1(1),....B1(9),E4(1),....E4(9),Y7(1),...Y7(9),B2(1),....B2(9)";
l_dictData["outputbit"] = "TGY";
这是我的正则表达式
1. ([ \t\r\n]*)?(data|DATA)([ \t\r\n]*)?(\()?
2. "[ \t\r\n]*(?<PINFUNC>(inputbit|outputbit|inputoutputbit))(_vector[ \t\r\n]*\([ \t\r\n]*(?<START>([0-9]+))[ \t\r\n]*(to|downto)[ \t\r\n]*(?<END>([0-9]+))[ \t\r\n]*\))?
注意:
“:”之前的文本(半冒号被视为字典的值)
如果您有任何疑问,请告诉我
答案 0 :(得分:4)
我不会使用正则表达式。我会做以下事情:
dictionary<string,list<string>>
哦,你可能需要一些trim()来处理你的空白。
答案 1 :(得分:1)
此表达式:(?:\(|\s)\s*([\w| |,]*):(\w*?) bit.*?;
得出这些结果:
[1] => Array
(
[0] => DIR1
[1] => DGG2
[2] => OENEG1
[3] => OE_NEG2
[4] => A1
[5] => A2,H5,J7
[6] => B1,E4,Y7
[7] => B2
[8] => TGY
[9] => THHH, Tff, TsD
)
[2] => Array
(
[0] => input
[1] => input
[2] => input
[3] => input
[4] => inputoutput
[5] => inputoutput
[6] => inputoutput
[7] => inputoutput
[8] => output
[9] => input
)
在逗号上拆分,修剪空格,在键上添加“位”,然后就完成了。
感谢My Regex Tester(如果您要求,也会解释这一点):http://www.myregextester.com/index.php