C# 如何使用正则表达式查找非';引号之间的t?
我想使用C# 如何使用正则表达式查找非';引号之间的t?,c#,regex,C#,Regex,我想使用C来编写正则表达式,以查找第一个)字符,该字符没有用单引号或双引号括起来 我有下面的字符串('some()test 1','some text'),1235,“,null)测试一些东西我想找到的唯一的)是null后面的那个 我不确定如何用正则表达式来表示“notbetween”。这是我试过的 [^(("|').*\).*("|'))]\) 但这比我期望的要多 我如何才能正确地找到没有括在引号周围的右括号 如果我的表达式有效,使用C#Regex.Match(str,pattern)应该返
C
来编写正则表达式,以查找第一个)
字符,该字符没有用单引号或双引号括起来
我有下面的字符串('some()test 1','some text'),1235,“,null)测试一些东西
我想找到的唯一的)
是null后面的那个
我不确定如何用正则表达式来表示“notbetween”。这是我试过的
[^(("|').*\).*("|'))]\)
但这比我期望的要多
我如何才能正确地找到没有括在引号周围的右括号
如果我的表达式有效,使用C#Regex.Match(str,pattern)
应该返回第一个匹配项
已更新
以下是我希望能够评估的一些文本
Itt似乎是在试图找到最后一个参数和函数的结尾,但我无权发表评论,所以我将在这里写下它
int FindIndexOfBackwards(string s, char tobefound, int index)
{
bool avoided = true;
int counter = index;
do
{
if( s[counter] == '"' && avoided == true)
{
avoided = false;
}
else if (s[counter] == '"' && avoided == false)
{
avoided = true;
}
if(s[counter] == tobefound && avoided == true ) return counter;
counter--;
}while( counter > -1);
return -1;
}
您可以使用LastIndexOf(“)”)作为函数的第三个参数。例如:
string parameters = "(\"some () test 1\", 'some text)', 1235,\"\",\"n,ull\" ) ";
int LastIndexOfComma =FindIndexOfBackwards(parameters, ',', parameters.LastIndexOf(")") ); // it avoids " and find comma that is out of it
string lastparameter = parameters.Substring(FindIndexOfBackwards(parameters, ',', parameters.LastIndexOf(")") ), parameters.LastIndexOf(")") - 1);
可以使用此方法递归地划分所有参数。
希望这能有所帮助。Itt似乎是在试图找到最后一个参数和函数的结尾,但我无权发表评论,所以我将在这里写下它
int FindIndexOfBackwards(string s, char tobefound, int index)
{
bool avoided = true;
int counter = index;
do
{
if( s[counter] == '"' && avoided == true)
{
avoided = false;
}
else if (s[counter] == '"' && avoided == false)
{
avoided = true;
}
if(s[counter] == tobefound && avoided == true ) return counter;
counter--;
}while( counter > -1);
return -1;
}
您可以使用LastIndexOf(“)”)作为函数的第三个参数。例如:
string parameters = "(\"some () test 1\", 'some text)', 1235,\"\",\"n,ull\" ) ";
int LastIndexOfComma =FindIndexOfBackwards(parameters, ',', parameters.LastIndexOf(")") ); // it avoids " and find comma that is out of it
string lastparameter = parameters.Substring(FindIndexOfBackwards(parameters, ',', parameters.LastIndexOf(")") ), parameters.LastIndexOf(")") - 1);
可以使用此方法递归地划分所有参数。
希望能有所帮助。那么,正则表达式应该在C#中工作,对吗?如果您想解析一些语言,最好使用专用的解析器。正则表达式最擅长解析纯文本。在这里,这不是一个查找字符而不是中间字符的问题,括号内有字符串文字,使用正则表达式(虽然在某种程度上可能)也不是那么容易,因为问题的提问方式我怀疑能否给出一个好的答案。您必须添加有关要处理的输入类型的更多详细信息。在一般情况下,这里的答案是“不要使用单一正则表达式方法”。@WiktorStribiżew我用一些可能的方法更新了我的问题text@WiktorStribiżew看待这个问题的另一种方法是解析函数“如果有的话”的参数,如果我有一个参数数组,我将在找到的最后一个参数之后立即查找
)
。您可以匹配您不想要的,但不需要的。你也可以使用一个向前看来假设外部。所以,正则表达式应该在C#中工作,对吗?如果您想解析一些语言,最好使用专用的解析器。正则表达式最擅长解析纯文本。在这里,这不是一个查找字符而不是中间字符的问题,括号内有字符串文字,使用正则表达式(虽然在某种程度上可能)也不是那么容易,因为问题的提问方式我怀疑能否给出一个好的答案。您必须添加有关要处理的输入类型的更多详细信息。在一般情况下,这里的答案是“不要使用单一正则表达式方法”。@WiktorStribiżew我用一些可能的方法更新了我的问题text@WiktorStribiżew看待这个问题的另一种方法是解析函数“如果有的话”的参数,如果我有一个参数数组,我将在找到的最后一个参数之后立即查找)
。您可以匹配您不想要的,但不需要的。你也可以用一个前瞻性的方法来假设外面。哦,不,我犯了一个错误哦,不,我犯了一个错误