如何找到特定的字符串

时间:2018-12-07 06:18:41

标签: regex visual-studio-2017

我正在使用Visual Studio 2017并在一个长文本文件中我正在搜索特定功能但找不到

这是正则表达式Im所使用的

c\.CreateMap\<(\w)+\,\s+Address\>

我想在这些

c.CreateMap<ClientAddress, Address>()

c.CreateMap<Responses.SiteAddress, Data.Address>()

,依此类推。

一旦我在正则表达式中添加“地址”,它就会停止匹配任何地址。 我在做什么错了?

4 个答案:

答案 0 :(得分:1)

这是我可以建议的常规正则表达式:

c\.CreateMap\<[\w.]+,\s+(?:[\w.]+\.)?Address\>\s*\(\s*\)

这将匹配在钻石的第一位置带有点或单词字符的任何术语。在第二个位置中,它将匹配Address或某些父类名称,后跟点分隔符,后跟Address

Demo

请注意,我还在正则表达式中包括了空的函数调用括号。同样,我允许在菱形之后或括号之间出现空白的灵活性。

答案 1 :(得分:1)

您可以尝试

c\.CreateMap\<\w+\.?\w+?\,\s*\w*?\.?Address\>
  

说明

  • c\.CreateMap\<-匹配c\.CreateMap\<
  • \w+-一次或多次匹配任何单词字符。
  • \.?-匹配“。”零次或一次。
  • \,-匹配“,”。
  • \s*-匹配空间零个或多个时间。
  • \w-匹配字符零个或多个时间。
  • \.?-匹配“。”零次或一次。
  • Address\>-匹配Address\>

Demo

PS -如果您还想匹配这样的内容。

c.CreateMap<Responses.SiteAddress.abc, Data.Address.xyz>()

您可以使用它。

c\.CreateMap\<(\w+\.?\w+?)*\,\s*(?:\w*?\.?)*Address(\.\w*)?\>

Demo

答案 2 :(得分:1)

在第二个示例中,您有未处理的多余点。您的正则表达式几乎不需要修改。另外,您无需转义<>,使用此功能,

c\.CreateMap<([\w.])+,\s+[\w.]*Address>

Demo

答案 3 :(得分:0)

要匹配问题中的任何功能,可以使用:

c\.CreateMap[^)]+\)

Regex Demo

正则表达式说明: enter image description here