在 C# 中,获取两个单词之间的单词的正确正则表达式是什么,但排除边界

本文关键字:单词 正则表达式 是什么 边界 排除 之间 两个 获取 | 更新日期: 2023-09-27 18:37:11

给定以下字符串:

加载数据来自:来自运行时为 23 秒的数据库的 schema.table。

我想从字符串中提取schema.table。当前重新

我目前正在使用此模式: :('s+)(.+)('s+)from在此评论的帮助下:使用正则表达式捕获两个单词之间的文本

我想知道如何修改此正则表达式以排除:from匹配项。

在 C# 中,获取两个单词之间的单词的正确正则表达式是什么,但排除边界

您可以使用环顾四周:

(?<=:'s+)(.+?)(?='s+from)

正则表达式演示

使用匹配但不捕获 (?: ) 它为匹配工作提供了锚点(:'s),但它不会作为最终输出捕获。

然后,可以简单地从我命名的组捕获中获取以下文本Text以轻松提取它:

string text = "Loaded data from: schema.table from database with runtime 23s.";
string pattern = @"(?::'s)(?<Text>[^'s]+)";
// Outputs "schema.table"
Console.WriteLine (Regex.Match(text, pattern).Groups["Text"].Value);

否则,如果没有命名捕获,它将是组的索引 1。