C# 如何在匹配字符串之前查找单词
通过堆栈溢出问题,但没有得到正确的答案。 我需要一个单独的正则表达式,用于匹配字符串的前后 1)在特定短语/单词后查找单词(这一个很好用) mytext=“xyz” 输入=“这是abc xyz defg” 输出应该是这样的 1) 首先,哪种方法有效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(@"(?
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);