using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions;namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string s = Regex.Match("X:='ABC'", @"'(.*)'").Groups[1].Value; Console.WriteLine(s); } } }
如果是从richtextbox中提取单引号中的内容存放到字符串数组string[] v中?
一样的string[] s = Regex.Matches(richTextBox1.Text, @"'(.*?)'").Cast<Match>().Select(x => x.Groups[1].Value).ToArray();
使用正则表达的方法: string s = Regex.Match("X:='ABC'", @"'(.+)'").Groups[1].Value; 使用substring的方法 s = s.Substring(s.IndexOf("'")+1, s.LastIndexOf("'") - s.IndexOf("'")-1);
测试代码: program example2; var A,B,C:integer; X,Y:bool; begin /* this is an example A:=B*C+37; X:=ABC’ end. 测试这个代码里面有几个词法错误 如begin /* this is an example 缺少了*/ X:=ABC’缺少了' 我自己编写了 for(int s=0;s<str1.Length;s++) { if (str1[s].ToString().IndexOf(界符[3].ToString()) > -1 && str1[s].ToString().IndexOf(界符[10].ToString()) == -1) { STR += "缺少" + 界符[10].ToString(); val = str1[s].Length; } if (str1[s].ToString().IndexOf(界符[3].ToString()) == -1 && str1[s].ToString().IndexOf(界符[10].ToString()) > -1) { STR += "缺少" + 界符[3].ToString(); } } 进行检测,但是那个缺少单引号的就不知道怎么检测
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string s = Regex.Match("X:='ABC'", @"'(.*)'").Groups[1].Value;
Console.WriteLine(s);
}
}
}
string s = Regex.Match("X:='ABC'", @"'(.+)'").Groups[1].Value;
使用substring的方法
s = s.Substring(s.IndexOf("'")+1, s.LastIndexOf("'") - s.IndexOf("'")-1);
X:=ABC'
那你需要处理二义性文法,比如
X:='X:=ABC' 究竟缺不缺单引号?
X:='ABC Y:=ABC'呢?还有X:='Y:='ABC''
X:='ABC' Y:='ABC'究竟是X:='ABC';Y:='ABC'还是X=ABC' Y:='ABC
等等。
program example2;
var A,B,C:integer;
X,Y:bool;
begin /* this is an example
A:=B*C+37;
X:=ABC’
end.
测试这个代码里面有几个词法错误
如begin /* this is an example 缺少了*/
X:=ABC’缺少了'
我自己编写了
for(int s=0;s<str1.Length;s++)
{
if (str1[s].ToString().IndexOf(界符[3].ToString()) > -1 && str1[s].ToString().IndexOf(界符[10].ToString()) == -1)
{
STR += "缺少" + 界符[10].ToString();
val = str1[s].Length;
}
if (str1[s].ToString().IndexOf(界符[3].ToString()) == -1 && str1[s].ToString().IndexOf(界符[10].ToString()) > -1)
{
STR += "缺少" + 界符[3].ToString();
}
}
进行检测,但是那个缺少单引号的就不知道怎么检测