Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.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 - Fatal编程技术网

C# 使用正则表达式检测后跟点或空格的单词

C# 使用正则表达式检测后跟点或空格的单词,c#,regex,C#,Regex,我使用regex和C#查找特定单词的出现情况 Regex regex = new Regex(@"\b" + word + @"\b"); 如果单词前面有空格,后面有空格,或者后面有点,我如何修改我的正则表达式以只检测单词 示例: this.Button.Value-应匹配 此.value-应匹配 document.thisButton.Value-不应匹配Regex Regex=new Regex(@)((?如果我理解正确: Regex regex = new Regex(@"((?<

我使用
regex
C#
查找特定单词的出现情况

Regex regex = new Regex(@"\b" + word + @"\b");
如果单词前面有空格,后面有空格,或者后面有点,我如何修改我的正则表达式以只检测单词

示例:

this.Button.Value-应匹配 此.value-应匹配


document.thisButton.Value-不应匹配

Regex Regex=new Regex(@)((?如果我理解正确:

Regex regex = new Regex(@"((?<=( \.))" + word + @"\b)" + "|" + @"(\b" + word + @"[ .])");
Regex regex = new Regex(@"\b" + (word " " || ".") + @"\b");

(?您可以使用lookarounds和alternation来检查关键字用空格括起来或紧跟一个点时的两种可能性:

var line = "this.Button.Value\nthis.value\ndocument.thisButton.Value";
var word = "this";
var rx =new Regex(string.Format(@"(?<=\s)\b{0}\b(?=\s)|\b{0}\b(?=\.)", word));
var result = rx.Replace(line, "NEW_WORD");
Console.WriteLine(result);
var line=“this.Button.Value\n this.Value\n文档.thisButton.Value”;
var word=“this”;

var rx=new Regex(string.Format(@)(?仍然。在发布之前运行它。请发布一些应该匹配和不应该匹配的示例。我怀疑您需要这样做,您的搜索词是“this”?请参阅。查看是否需要替换。前面的标记不可量化。@tchelize:在英语中?
(?它也接受字符串)。some当它不应该的时候。@dotNET:他说“如果它前面有一个空格…”。所以它会匹配“.some”而不是点,只有“some”。dotNET。我尝试过你的解决方案,但问题是当我尝试替换这个词时,代码也会替换点和空格:foreach(regex.Matches(text))中的match{output=text.Replace(match.Value,target);}所以,如果我有一个类似于代码>这个字段.Value,而不是给我结果>代码>目标.Field1.Value它给出了<代码> TraceTField1.Value。我怎样才能匹配<代码>这个< /Cord>?但是,如果它之前有一个空白和一个点后,只考虑它是匹配的吗?@ EelnADBA:那是因为它们是ILCU。在比赛中被击败。试试我的解决方案。@ElenaDBA:那么你基本上想用
Y.Field1.Value
替换
X.Field1.Value
,其中X和Y是两个不同的字符串?@ElenaDBA:更新了我的答案。看看它现在是否对你有效。对我仍然不起作用-替换
X.Field1.Value
时,它会生成
yfield1.Value
而是
y.field1.value
var line = "this.Button.Value\nthis.value\ndocument.thisButton.Value";
var word = "this";
var rx =new Regex(string.Format(@"(?<=\s)\b{0}\b(?=\s)|\b{0}\b(?=\.)", word));
var result = rx.Replace(line, "NEW_WORD");
Console.WriteLine(result);