当前位置: 首页 > 知识库问答 >
问题:

如何使用Regex找到不在引号之间的字符?

松嘉颖
2023-03-14

我想使用C#编写Regex表达式,以找到第一个没有包裹在单引号或双引号周围的字符。

我有下面的字符串('some()test 1','some text'),1235,“,null)测试一些东西我想找到的唯一的是null后面的那个。

我不确定如何用正则表达式来表示“notbetween”。这是我试过的

[^(("|').*\).*("|'))]\)

但这符合我的期望。

我如何才能正确地找到没有括在引号周围的右括号?

使用C#Regex。如果表达式有效,则Match(str,pattern)应返回第一个匹配项。

这里更新了一些我希望能够评估的文本

  1. (“some()test 1”,“some text)”,1235,“,null)测试某物

共有1个答案

狄峰
2023-03-14

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);

可以使用此方法递归地划分所有参数。希望有帮助。

 类似资料:
  • 我有这样一个价值观: 什么正则表达式将返回包含在引号中的值(例如和)?

  • 这与:正则表达式:在引号之间抓取值有关。 如果有这样的字符串: 链接上给出的正则表达式 他给了我 什么正则表达式将返回包含在引号中的值(特别是在标记之间)? 使用Java,way。

  • 我正在寻找正确的regex来为我提供以下结果: null 例子: 福吧 组1:foo 组2:bar 说明:在空格上拆分 组1:foo bar 描述:用双引号包围,所以将foo和bar分组,但不要打印双引号 null null null null null 组1:foo bar 组2:堆栈溢出 组1:foo'bar 组2:堆栈溢出 组3:如何 组4:do 组5:您 组6:do

  • 问题内容: 使用正则表达式的python中的代码可以执行类似这样的操作 谢谢 问题答案: 这是您需要做的所有事情: 正如叶立昂指出:(我几乎引用) 是的“非贪婪”版本。它使正则表达式匹配的字符数最少,而不是最多。贪婪的版本会给出字符串;非贪婪版本‘String 1,String 2,String3’ 另外(再次使用Johan,),如果您想接受空字符串,请更改为。星号表示零个或多个-加号表示至少一个

  • 在我的应用程序中,我可以接受如下格式的字符串: 现在我想写一个regex模式来检查这个格式,所以我写这个模式: https://regex101.com/r/oM1qO9/3 这个模式可以工作,但如果我将字符串更改为下面的示例,请再次工作,因为选择第一个引号和最后一个引号,这样字符串就与模式匹配。 https://regex101.com/r/oM1qO9/4

  • 例如:当我通过->不要:它工作正常 但是当我通过->don''t:它不正常工作时,最终输出变成了don'''t 我只想把单引号转换成双引号。我怎么能这么做?