c#使用正则表达式提取句子

c#使用正则表达式提取句子,c#,regex,C#,Regex,首先,如果这个问题被问了好几次,我很抱歉,但即使在检查了现有的答案之后,我也不知道如何解决它。 我对Regexp很陌生,我想做的是在字符串“Translate”之后提取双引号之间的句子,知道后一个字符串可能出现多次未知的时间,双引号之间的句子可能包含数字和特殊字符 例如,使用下面的表达式: 'RadMessageBox.Show(Translate("Problem with arguments"), Translate("Error!"), Translate("Bad digital for

首先,如果这个问题被问了好几次,我很抱歉,但即使在检查了现有的答案之后,我也不知道如何解决它。 我对Regexp很陌生,我想做的是在字符串“Translate”之后提取双引号之间的句子,知道后一个字符串可能出现多次未知的时间,双引号之间的句子可能包含数字和特殊字符

例如,使用下面的表达式:

'RadMessageBox.Show(Translate("Problem with arguments"), Translate("Error!"), Translate("Bad digital format, it must be of the form 112.3456E12."), MessageBoxButtons.OK, RadMessageIcon.Error);'
我会:

'Problem with arguments      Error!      Bad digital format, it must be of the form 112.3456E12.'

Dot NET:
@“Translate\([^“]+)”
,接下来您应该加入结果。

以下内容将为您提供字符串,包括引号:
“[^[”]*。]*

如果要删除它们,可以使用简单的
string.Split(“”)

您可以使用以下网站练习自己构建正则表达式:


如果我正确理解了这个问题,这就是一个有效的例子,翻译不是一个字符串。这是一个你调用的方法。你发布的文本看起来像是代码。你是在寻找一个正则表达式来从源代码文件中提取引号之间的字符串吗?还是你在试图改变正在运行的程序的行为?它有因为我试图用正则表达式提取句子…完全是Cid,Translate是一种方法Yes gnud,它是一种代码,我正在寻找正则表达式来提取源代码中引号之间的字符串,它工作得很好@crankedrelic谢谢!你能描述一下你是如何编写模式的吗?不客气。看看这里,你会看到你的你可以通过删除“,”来编辑模式,以仅匹配双引号。如果我错了,请更正我,但该模式将在双引号之间的任何句子或字符下串。但是,如果我有类似的内容(请参见下文),它将不会仅为我的翻译方法提供句子:
msgerror+=Translate(“命名符号“+”\“+symbol.name+”\“+”翻译(“,行”)+(symbol.row+1)+翻译(“列”)+(symbol.column+1)+翻译(,下面使用的符号不正确。”)+“\n”
您能告诉我在这种情况下应该使用什么模式吗?
const string sent = "RadMessageBox.Show(Translate(\"Problem with arguments\"), Translate(\"Error!\"), Translate(\"Bad digital format, it must be of the form 112.3456E12.\"), MessageBoxButtons.OK, RadMessageIcon.Error);";
const string pattern = "([\"'])(?:\\1|.)*?\\1";

var results = Regex.Matches(sent, pattern);
var sb = new StringBuilder();

foreach (var match in results)
{
    sb.Append(match.ToString().Trim('"') + " ");
}

Console.WriteLine(sb.ToString());