C# 正则表达式查找两个字符中的至少一个

C# 正则表达式查找两个字符中的至少一个,c#,.net,regex,C#,.net,Regex,请注意,我对正则表达式还不熟悉,所以我的语法可能有点不正确 以下是我的表达: "(?:\\s*[\"]?[']?\\s*)" (?:\\s*[\\"\\']\\s*) 这相当于:任意数量的空白,然后是双引号,然后是单引号,然后是任意数量的空白 我的问题是,即使没有双引号或单引号,这仍然匹配 如何使表达式至少有一个双引号或一个单引号?请尝试此表达式: "(?:\\s*[\"]?[']?\\s*)" (?:\\s*[\\"\\']\\s*) :D这应该可以完成以下工作: @"(?:\s*('

请注意,我对正则表达式还不熟悉,所以我的语法可能有点不正确

以下是我的表达:

"(?:\\s*[\"]?[']?\\s*)"
(?:\\s*[\\"\\']\\s*)
这相当于:任意数量的空白,然后是双引号,然后是单引号,然后是任意数量的空白

我的问题是,即使没有双引号或单引号,这仍然匹配

如何使表达式至少有一个双引号或一个单引号?

请尝试此表达式:

"(?:\\s*[\"]?[']?\\s*)"
(?:\\s*[\\"\\']\\s*)

:D

这应该可以完成以下工作:

@"(?:\s*('|\")+\s*)"

如果你的意思是想找到一个单引号或一个双引号,那么就把它们都放在一个字符组中,不要在后面加问号

(?:\s*[\”']\s*)

如果你的意思是你想要一个或多个单引号或一个或多个双引号

(?:\s*([\“]+)|([']+)\s*)

如果你的意思是你想要一个或多个单引号或双引号


(?:\s*[\“']+\s*)

-把它放在这里-一切都会清楚的!:数据至少是1个双精度或1个单精度,或者正好是1个(双精度或单精度)?如果总共允许使用多个引号,那么所有引号是否都需要连续才能使模式作为一个整体匹配?@DaveBish,这是一个多么优秀的工具!我将来会使用很多!:-)@Jon,说我有:“:或“:\t”,它应该与此匹配。基本上我想要:找到任何空格,后跟1,只有1个双引号或单引号,然后是任何其他空格。@series0ne:找到任何空格
\\s*
后跟1,只有1个双引号或单引号
(\“|”)
然后是任何其他空格
\\s*
。所有这些加在一起:
\\s*(\“|”)\\s*)
。没有那么复杂。在逐字字符串中,你必须将
屏蔽为
,而屏蔽
在任何类型的字符串文字中都是错误的。
”(?:\\s*[\']\\s*)“
@”(?:\s*[']\s*)”
是正确的,
(?:\s*[']]\s*)
。在修复之前,正则表达式更好;)在逐字逐句中,双引号不应该由另一个双引号字符而不是反斜杠转义吗?生成的正则表达式将是
@”(?:\s*('|“”)+\s*)“
”有效!你刚刚教了我一些关于正则表达式的新知识!谢谢!:-)@series0ne:如果您总共只需要一个报价,请将
+
放在那里。谢谢,这详细说明了我需要什么,但这是一件好事!现在我参考了三种不同的场景,其他任何访问此页面的开发人员也会这样做。