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