簡體   English   中英

在C#中,什么是獲得兩個單詞之間的單詞但排除邊界的正確RegEx?

[英]In C# what is the correct RegEx to get get words between two words, but exclude the boundaries?

給定以下字符串:

從運行時23s的數據庫中的schema.table中加載數據。

我想從字符串中提取schema.table 目前重新

我當前正在使用以下模式:: :(\\s+)(.+)(\\s+)from來自此注釋的幫助: 使用正則表達式捕獲兩個單詞之間的文本

我想知道我怎么能修改此正則表達式來排除:from比賽。

您可以使用環顧:

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

正則演示

使用match但不捕獲(?: ) :),它為工作正常進行提供了錨點( :\\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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM