打印函数名称,其中出现字符串模式

时间:2014-08-21 09:57:40

标签: regex powershell automation powershell-v2.0 powershell-v3.0

我正在寻找一种自动执行手动任务的方法。我不确定它是否可能。
我必须在项目文件夹的所有文件中找到一个字符串模式。它是C#/ .net项目的项目(如果这很重要的话)。我还必须编写模式出现的函数名称和文件名,以及匹配它的完整字符串。到目前为止,我已经完成了PowerShell

PS C:\trunk> Get-ChildItem "C:\trunk” -recurse | Select-String -pattern
“AlertMessage” | group path | select name

这将打印字符串模式匹配的文件名。

PS C:\trunk> Select-String -pattern "AlertMessage" -path
"C:\trunk\VATScan.Web\Areas \Administration\Controllers\HomeController.cs”

这将打印在给定文件中与其匹配的行号和字符串。

关于如何实现目标的任何指示?

1 个答案:

答案 0 :(得分:1)

绝不是完美的,但至少我属于指针类别

$text = @"
Public Sub Bitchin()
    Dim AlertMe
End Sub

Private Sub Function() As something

End Function
"@

[void]($text -match "(?smi)((public|private)\W(sub|function)\W(.+?)\(.*?Alertme)")
$Matches[4]

这将查找一个Function或Sub例程声明,在单词之间有一个空格,后面出现单词AlertMe

需要从$Matches获取第4项,因为有许多捕获组。

可以找到使用正则表达式的更简明的解释here

希望这会让你开始或至少思考。我不熟悉c#声明,因为$text更像是一个VBA示例,但你应该明白这一点。