C# 在正则表达式中查找注释之间的所有精确文本

C# 在正则表达式中查找注释之间的所有精确文本,c#,.net,regex,C#,.net,Regex,我不是regex方面的专家,我对regex了解得足够多,但我尝试了所有方法,但都没有成功 我在过程中有以下SQL注释: /*------------------------------------------------------------------------------------------ Procedure...............: [EDIParam].[STP_TB_Segment_Select_by_SegmentID] F

我不是regex方面的专家,我对regex了解得足够多,但我尝试了所有方法,但都没有成功

我在过程中有以下SQL注释:

/*------------------------------------------------------------------------------------------                     
Procedure...............: [EDIParam].[STP_TB_Segment_Select_by_SegmentID] 
Funcao..................: Retorna conjunto de linhas de acordo com o tokenID

{TextToFind}

Tabelas utilizadas......: [EDIParam].[TB_Segment]                  
Procedures utilizadas ..: nenhuma                    
Criada por..............: Vinícius Cesar Cestari
Data criacao............: 18/12/2014
Parametros..............: 
                            @SEG_Id INT
SET NOCOUNT ON
Result Set..............: nenhum

Exemplos de uso:   Exec STP_SuaProc         
{TextToFind}                    
Ultimas alteracoes:                    
Data        Nome                  Descricao                     
----------  -------------------  ------------------------------------------------------------------------------------------------------- 

----------  -------------------  -------------------------------------------------------------------------------------------------------*/
所以我必须找到
TextToFind
,但是使用这个正则表达式:
(?:\/\*\-.*)({TextToFind})。*(?:\-*\*\*\*\/)
它只得到最后一个
TextToFind
,它有点忽略第一个,当我放入惰性量词时,它得到第一个,但忽略最后一个。所以,我真的想知道如何在正则表达式匹配中找到所有
TextToFind


**OBS:*我使用的是C#,而
TextToFind
只能是文本。

使用
\{TextToFind\}
可以找到“{TextToFind}”的所有实例。 如果需要获取
{TextToFind}
之间的所有文本,请使用
(?p.Value).ToList());
}

您必须指定要提取的文本部分。“我必须找到TextToFind”不够清楚。唯一的捕获组必须是TextToFind,然后使用\{TextToFind\}搜索。但是,TextToFind可以位于评论中的每个位置。请澄清您是否需要查找任何文本,或者此特定字符串
{TextToFind}
,或者占位符
{TextToFind}之间的文本片段
?我在回答中添加了一个选项:返回/*…*/comment中的字符串
{TextToFind}
。TextToFind就是一个例子,它可以是任何单词,我将作为参数传递,恢复它是一个变量,它必须是文本。
var contents = @"<Multiline text>"; // USE YOUR INPUT HERE
var words = new string[] { "word1", "word2" }; // USE YOUR WORDS HERE
foreach (var word in words)
{
   var pattern = new Regex(string.Format(@"(?<=/\*.*){0}(?=.*\*/)", word), RegexOptions.Singleline);
   MessageBox.Show(String.Join(", ", pattern.Matches(contents).Cast<Match>().ToList().Select(p => p.Value).ToList()));
}