例如
int val = 13;
Serial.begin(9600);
val = DigitalWrite(900,HIGH);
我真的想要提取像=
和;
这样的特殊符号。
我已经能够提取出现在代码中相邻的符号,但我需要所有出现的内容。
我尝试了[^ "//"A-Za-z\t\n0-9]*
和[\;\=\{\}\,]+
。两者都没有。
出了什么问题?
我为我的扫描仪制定了如下规则。(已更改)
分号[;]([\ n] | [^“//”])
赋值(。)?[=] +
大括号([{] | [}])([\ n] | [^“//”])
roundbarcket(“()”)“”
问题就像这些情况一样发生
int val = 13; //它无法识别“=”因为“val”和“=”是相邻的。我想认识他们是否相邻
serial.read(); //它无法识别()和;单独的。如果我添加分号规则和roundbarcket规则,();被认可了。
我该如何解决?
答案 0 :(得分:2)
你想打破" DigitalWrite(900,HIGH);"进入" DigitalWrite" "("" 900"","" HIGH"")" &#34 ;;&#34 ;.我认为循环每个子字符串是最快的方法。
string text = "val = DigitalWrite(900,HIGH);";
string[] symbols = new string[] { "(", ")", ",", "=", ";"};
List<string> tokens = new List<string>();
string word = "";
for( int i = 0; i < text.Length; i++ )
{
string letter = text.Substring( i, 1 );
if( !letter.Equals( " " ) )
{
if( tokens.Contains( letter ) )
{
if( word.Length > 0 )
{
tokens.Add( word );
word = "";
}
tokens.Add( letter );
}
else
{
word += letter;
if(i == text.Length - 1 )
tokens.Add( word );
}
}
}
答案 1 :(得分:0)
所以搜索“;”而“=”是你想要实现的最终目标?
在这种情况下,为什么不使用.find()
函数之类的东西?
或者,您可以通过“;”拆分字符串首先,在之后搜索“=”。
如果您想在“=”和“;”之间抓取文字,请尝试使用=([^;]*);
或=(.*?);