我想在源代码中匹配 ''中的内容,比如 语句:fanme('1','2',0);中可以匹配出'1'和'2',但还要能匹配出fname,(,,,0,),相当于在''之外匹配其它字符,请问该正则表达式该怎么写????
谢谢了!写了这样的语句,但没有实现,苦恼啊!!!!!!!!!!!
Regex r = new Regex(@"\w+|[^A-Za-z0-9_ \f\t\v](?!\(+\))|(\'|\"")(.*?)(\1)", RegexOptions.IgnoreCase | RegexOptions.Compiled);
谢谢了!写了这样的语句,但没有实现,苦恼啊!!!!!!!!!!!
Regex r = new Regex(@"\w+|[^A-Za-z0-9_ \f\t\v](?!\(+\))|(\'|\"")(.*?)(\1)", RegexOptions.IgnoreCase | RegexOptions.Compiled);
匹配成功输出字符:fname
(
'1'
,
'2'
,
0
)
;要求能成功匹配以上字符,我要把这些匹配的字符放进一个数组中来使用,各位高手请帮忙!下面是实现代码,但匹配不成功: TheBuffer.Initialize();
int count = 0; Regex r = new Regex(@"\w+|[^A-Za-z0-9_ \f\t\v](?!\(+\))|(\'|\"")(.*?)(\1)", RegexOptions.IgnoreCase | RegexOptions.Compiled);
Match m; for (m = r.Match(s); m.Success; m = m.NextMatch())
{
TheBuffer[count].Word = m.Value;
TheBuffer[count].Position = m.Index;
TheBuffer[count].Length = m.Length; count++;
}
我需要在里面提取出若干字符来放在数组中,对于一个单词形式,如"fname"要全字符提取,对于' '中的内容也要连' '一起提取,其它标点符号可以单字符提取,所以对于上面的字符串:
"fname('1','2',0);" 可以匹配出如下结果: fname
(
'1'
,
'2'
,
0
)
;
string s = "fname('123','45',6)";
测试结果如下
frame
(
'123'
,
'45'
,
6
)
;
符合你的要求不?
fname
(
'
1
'
,
'
2
'
,
0
)
;
(
'1'
,
'2'
,
)
;
(
'1'
,
'2'
,
0
)
;
fff123 ('11','啊你啊',0);表达式
^[a-zA-Z]\w+|\(|'[^']*'|\)|\,|[0-9]+|\; //注意'啊你啊'中不能有'输出fff123
(
'11'
,
'aa'
,
0
)
;
情况2
fff123 (string a,string b,int c);^[a-zA-Z]\w+|\(|[a-zA-Z]\w+\s+[a-zA-Z]\w*|\)|\,|[0-9]+|\;fff123
(
string a
,
string b
,
int c
)
;
var
f1name
=
' '
;
对于这样的语句: sysLog('dataset9 run error:');要能提取的字符如下:
sysLog
('dataset9 run error:'
)
;对于这样的语句: /* f3name = DS_ResultValue(10,"0","0"); 要能提取的字符如下:
/
*
f3name
=
DS_ResultValue
(
10
,
"0"
,
"0"
)
;
对于这样的语句: //DS_Run(8); 要能提取的字符如下:
/
/
DS_Run
(
8
)
;
总之,对于语句中的存在双引号""和单引号''的部分要连同引号一同提取,对于引号之外的,按连续单词提取,不能把f1name 拆成f 1 name ,其它标点符号由单个提取,如,;()=+-*/以上对于简单的例子可以胜任,对于我现在提出的例子不能胜任,请各位指点!
你不应该用一个正则表达式解决问题,如果是做编译器的语法分析的话,自己写分析器比正则表达式更好。