Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.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,通过堆栈溢出问题,但没有得到正确的答案。 我需要一个单独的正则表达式,用于匹配字符串的前后 1)在特定短语/单词后查找单词(这一个很好用) mytext=“xyz” 输入=“这是abc xyz defg” 输出应该是这样的 1) 首先,哪种方法有效 xyz defg 2) 第二,这是行不通的 abc xyz 您需要在单词before和关键字之间留出空格 另外,为了增加安全性,我将使用Regex.Escape和mytext变量 因此,我建议使用 var regex = new Regex(@"(?

通过堆栈溢出问题,但没有得到正确的答案。 我需要一个单独的正则表达式,用于匹配字符串的前后

1)在特定短语/单词后查找单词(这一个很好用)

mytext=“xyz”

输入=“这是abc xyz defg”

输出应该是这样的

1) 首先,哪种方法有效
xyz defg

2) 第二,这是行不通的

abc xyz


您需要在单词before和关键字之间留出空格

另外,为了增加安全性,我将使用
Regex.Escape
mytext
变量

因此,我建议使用

var regex = new Regex(@"(?<word>\b\S+\b\s+)?(?:" + Regex.Escape(mytext) + @"\b)");

在特定短语/单词后查找单词

var regex = new Regex(mytext + @"\s\w+");
var regex2 = new Regex(@"\w+\s" + mytext);
在特定短语/单词之前查找单词

var regex = new Regex(mytext + @"\s\w+");
var regex2 = new Regex(@"\w+\s" + mytext);

考虑使用<代码>字符串。格式化< /代码>使正则表达式更具可读性。@and+和“使解析变得很棘手。如
@”(?\b\S++\b)\S+(?:“+Regex.Escape(mytext)+@“\b)”
?或
@(?\b\S++\b+)(?:“+Regex.Escape(mytext)+\b)”
如果您计划在可选之前强制使用该词。@Stribizov感谢您的解决方案:)现在就可以使用
.IndexOf()
.SubString()
?这也包括文本mytext。如何编写模式,使匹配值只给出mytext之前的单词,而排除mytext?您可以尝试从结果字符串中删除mytext字符串。替换函数将帮助您。string replacedString=Regex.Replace(match.value,mytext,”);
var regex2 = new Regex(@"\w+\s" + mytext);