Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带或不带正则表达式的C#字符串屏蔽/格式化/过滤_C#_Regex_String_String Formatting - Fatal编程技术网

带或不带正则表达式的C#字符串屏蔽/格式化/过滤

带或不带正则表达式的C#字符串屏蔽/格式化/过滤,c#,regex,string,string-formatting,C#,Regex,String,String Formatting,希望这不是太复杂,我只是找不到我需要的答案 我有一个包含变量的字符串,例如:这是一个%variable%string 字符串中变量的格式是任意的,尽管在本例中我们使用的是过滤器%{0}% 我希望将变量名与属性相匹配,理想情况下,我不希望遍历GetProperties,格式化和测试每个名称。我想做的是获取“variable”作为字符串并进行测试 我已经使用RegEx来获取字符串中的变量列表,使用给定的过滤器: string regExSyntax=string.Format(语法,@“(?\w+)

希望这不是太复杂,我只是找不到我需要的答案

我有一个包含变量的字符串,例如:
这是一个%variable%string
字符串中变量的格式是任意的,尽管在本例中我们使用的是过滤器
%{0}%

我希望将变量名与属性相匹配,理想情况下,我不希望遍历
GetProperties
,格式化和测试每个名称。我想做的是获取“variable”作为字符串并进行测试

我已经使用RegEx来获取字符串中的变量列表,使用给定的过滤器:
string regExSyntax=string.Format(语法,@“(?\w+))
但这会返回带有“%”(例如“%variable%”)的筛选器,正如我所说的,该筛选器是任意的,所以我不能只执行string.Replace

这感觉应该是直截了当的

谢谢

“(?\w+”
   "(?<word>\w+)"
只是捕获任何数字并将其放入名为“Word”的命名捕获组中

您可能对学习“向后看”和“向前看”感兴趣。例如:

"(?<=%)(?<word>\w+)(?=%)"
(?
)(?\w+)
只是捕获任何数字并将其放入名为“Word”的命名捕获组中

您可能对学习“向后看”和“向前看”感兴趣。例如:

"(?<=%)(?<word>\w+)(?=%)"
(?Acron

如果您打算使用自己的脚本解析器……除了“有点疯狂”,除非这是练习的重点(是吗?),否则我强烈建议您亲吻它……保持简单

那么,在脚本语法中,什么表示变量?是百分号吗?它们是固定的,是吗?所以
%name%
是一个变量,但是#comment#不是一个变量…对吗?短语“该过滤器是任意的”让我担心。“过滤器”是什么

如果这不是家庭作业,那么就使用现有的脚本引擎,使用现有的、定义良好的、众所周知的语法

干杯,基思。

Acron

如果您打算使用自己的脚本解析器……除了“有点疯狂”,除非这是练习的重点(是吗?),否则我强烈建议您亲吻它……保持简单

那么,在脚本语法中,什么表示变量?是百分号吗?它们是固定的,是吗?所以
%name%
是一个变量,但是#comment#不是一个变量…对吗?短语“该过滤器是任意的”让我担心。“过滤器”是什么

如果这不是家庭作业,那么就使用现有的脚本引擎,使用现有的、定义良好的、众所周知的语法


Cheers.Keith.

鉴于您的正则表达式语法是:
string regExSyntax=string.Format(语法,@“(?\w+));
,我假设您将创建一个
regex
,并使用它来匹配某些字符串:

Regex reExtractVars = new Regex(regExSyntax);
Match m = reExtractVars.Match(inputString);
while (m.Success)
{
    // get the matched variable
    string wholeVar = m.Value;  // returns "%variable%"

    // get just the "word"
    string wordOnly = m.Groups["word"].Value;  // returns "variable"

    m = m.NextMatch();
}

还是我完全误解了这个问题?

鉴于您的正则表达式语法是:
string regExSyntax=string.Format(syntax,@“(?\w+));
,我假设您将创建一个
regex
,并使用它来匹配某些字符串:

Regex reExtractVars = new Regex(regExSyntax);
Match m = reExtractVars.Match(inputString);
while (m.Success)
{
    // get the matched variable
    string wholeVar = m.Value;  // returns "%variable%"

    // get just the "word"
    string wordOnly = m.Groups["word"].Value;  // returns "variable"

    m = m.NextMatch();
}

还是我完全误解了这个问题?

这就是我要去的地方…;-)完美:)我想这表明我对正则表达式缺乏经验。谢谢。如果您有另一个边界是一个特殊的正则表达式字符(例如$),您必须在构造表达式之前对其进行转义:string Boundie=Regex.escape($);那就是我要去的地方…;-)完美:)我想这表明我对正则表达式缺乏经验。谢谢。如果您有另一个边界是一个特殊的正则表达式字符(例如$),您必须在构造表达式之前对其进行转义:string Boundie=Regex.escape($);不,这不是家庭作业,但用法是如此,如此原始,完全没有必要使用成熟的解析器。但你说得很对,我可以强制执行语法,我只是希望尽可能保持它的开放性。了解我的行业,我可能会得到以下反馈:“%太难看了。我们可以用笑脸代替吗?:)变量(:”所以你告诉美发师“Chopper博士禁止一大杯……这不是家庭作业不,但用法是如此,如此原始,完全没有必要使用成熟的解析器。但你说得很对,我可以强制执行语法,我只是希望尽可能保持它的开放性。了解我的行业,我很可能会从以下方面得到反馈:%太难看了。我们可以用笑脸代替吗?:)变量(:“所以你告诉理发师”Chopper医生禁止一大杯…该死的,我知道这很容易。这绝对是我需要的答案,尽管Guidhouse的答案也完全有效。我不知道你可以访问这样的团体。谢谢。该死的,我知道这很容易。这绝对是我需要的答案,尽管Guidhouse的答案也完全有效。我我不知道你可以访问这样的群组。谢谢。