通过堆栈溢出问题,但没有得到正确的答案.我需要在匹配字符串之前和之后使用单独的正则表达式.
1)找到一个特定的短语/单词后的单词(这个工作正常)
var regex = new Regex(@"(?:" + mytext + @"\s)(?<word>\b\S+\b)");
Run Code Online (Sandbox Code Playgroud)
2)在特定短语/单词之前找到单词(不起作用)
var regex = new Regex(@"(?:\S+\s)?\S*" + mytext + @"\b\S");
Run Code Online (Sandbox Code Playgroud)
mytext的= "XYZ"
输入="这是abc xyz defg"
输出应该是这样的
1)首先,这是工作
xyz defg2)第二,这是行不通的
abc xyz
您需要在单词之前和关键字之间留出空格。
另外,为了额外的安全性,我将 aRegex.Escape与mytext变量一起使用。
所以,我建议使用
var regex = new Regex(@"(?<word>\b\S+\b\s+)?(?:" + Regex.Escape(mytext) + @"\b)");
Run Code Online (Sandbox Code Playgroud)
查看演示
为了确保我们捕获整个单词,您可以使用正则表达式的以下变体(因为 是word可选的,\b可能是必要的):
var regex = new Regex(@"(?<word>\b\S+\b\s+)?(?:\b" + Regex.Escape(mytext) + @"\b)");
^^
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
985 次 |
| 最近记录: |