c#为powershell代码着色 - 正则简单应用

效果如 http://bbs.winos.cn/thread-121113-1-1.html  要更改的话需要注意下面的 color

代码如下

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;

namespace PowerShellColor
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button2_Click(object sender, EventArgs e)
{
//Regex r = new Regex(@"(\bget-process\b|\bac\b)",RegexOptions.IgnoreCase);
//String s = r.Replace("a get-process d get-Process ac lkj", "[0]$1[0]");
//MessageBox.Show(s);
//Match m = r.Match("a get-process");
//if(m.Success)
//{
// MessageBox.Show(m.Value);
//}
/* StringBuilder test = new StringBuilder();
String ss = richTextBox1.Text;
string[] lines = ss.Split('\n');
foreach (String line in lines)
{
test.Append(line);

}
richTextBox2.Text = test.ToString();
*/


this.Close();
}

private void button1_Click(object sender, EventArgs e)
{
StringBuilder fmtstr = new StringBuilder();
String scr = richTextBox1.Text;
String [] lines = scr.Split('\n');
foreach (String line in lines)
{
Regex r = new Regex(@"(.*)(?=#)(.*)");
// Regex r1 = new Regex(@"(.*)");
// Match m = r1.Match(line);
// String lll = r1.Replace(line,"$1");
Match m = r.Match(line);
if (m.Success)
{
fmtstr.Append(setse(m.Groups[1].Value, false) + "[color=darkgreen]" + m.Groups[2].Value + "[/color]" + "\n");
}
else
{
fmtstr.Append(setse(line, true));

}
//fmtstr.Append(m.Groups[1].Value + ",\n");
}
richTextBox2.Text = fmtstr.ToString();
Clipboard.SetDataObject(richTextBox2.Text);


}




public static String keyList = @"(\b-host\b|\bac\b|\basnp\b|\bclc\b|\bcli\b|\bclp\b|\bclv\b|\bcompare\b|\bcpi\b|\bcpp\b|\bcvpa\b|\bdbp\b|\bdiff\b|\bebp\b|\bepal\b|\bepcsv\b|\bfc\b|\bfl\b|\bforeach\b|\bft\b|\bfw\b|\bgal\b|\bgbp\b|\bgc\b|\bgci\b|\bgcm\b|\bgdr\b|\bgcs\b|\bghy\b|\bgi\b|\bgl\b|\bgm\b|\bgmo\b|\bgp\b|\bgps\b|\bgroup\b|\bgsv\b|\bgsnp\b|\bgu\b|\bgv\b|\bgwmi\b|\biex\b|\bihy\b|\bii\b|\bipmo\b|\biwmi\b|\bipal\b|\bipcsv\b|\bmeasure\b|\bmi\b|\bmp\b|\bnal\b|\bndr\b|\bni\b|\bnv\b|\bnmo\b|\boh\b|\bogv\b|\bise\b|\brbp\b|\brdr\b|\bri\b|\brni\b|\brnp\b|\brp\b|\brmo\b|\brsnp\b|\brv\b|\brwmi\b|\brvpa\b|\bsal\b|\bsasv\b|\bsbp\b|\bsc\b|\bselect\b|\bsi\b|\bsl\b|\bswmi\b|\bsleep\b|\bsort\b|\bsp\b|\bsaps\b|\bstart\b|\bspps\b|\bspsv\b|\bsv\b|\btee\b|\bwhere\b|\bwrite\b|\bcat\b|\bcd\b|\bclear\b|\bcp\b|\bh\b|\bhistory\b|\bkill\b|\blp\b|\bls\b|\bman\b|\bmount\b|\bmd\b|\bmv\b|\bpopd\b|\bps\b|\bpushd\b|\bpwd\b|\br\b|\brm\b|\brmdir\b|\becho\b|\bcls\b|\bchdir\b|\bcopy\b|\bdel\b|\bdir\b|\berase\b|\bmove\b|\brd\b|\bren\b|\bset\b|\btype\b|\bicm\b|\bclhy\b|\bgjb\b|\brcjb\b|\brjb\b|\bsajb\b|\bspjb\b|\bwjb\b|\bnsn\b|\bgsn\b|\brsn\b|\bipsn\b|\bepsn\b|\betsn\b|\bexsn\b|\bprompt\b|\bTabExpansion\b|\bClear-Host\b|\bmore\b|\bhelp\b|\bmkdir\b|\bDisable-PSRemoting\b|\bGet-Verb\b|\bImportSystemModules\b|\bDisable-PSTrace\b|\bDisable-PSWSManCombinedTrace\b|\bDisable-WSManTrace\b|\bEnable-PSTrace\b|\bEnable-PSWSManCombinedTrace\b|\bEnable-WSManTrace\b|\bGet-LogProperties\b|\bSet-LogProperties\b|\bStart-Trace\b|\bStop-Trace\b|\bGet-WinEvent\b|\bGet-Counter\b|\bImport-Counter\b|\bExport-Counter\b|\bDisable-WSManCredSSP\b|\bEnable-WSManCredSSP\b|\bGet-WSManCredSSP\b|\bSet-WSManQuickConfig\b|\bTest-WSMan\b|\bInvoke-WSManAction\b|\bConnect-WSMan\b|\bDisconnect-WSMan\b|\bGet-WSManInstance\b|\bSet-WSManInstance\b|\bRemove-WSManInstance\b|\bNew-WSManInstance\b|\bNew-WSManSessionOption\b|\bGet-Command\b|\bGet-Help\b|\bGet-History\b|\bInvoke-History\b|\bAdd-History\b|\bClear-History\b|\bRegister-PSSessionConfiguration\b|\bUnregister-PSSessionConfiguration\b|\bGet-PSSessionConfiguration\b|\bSet-PSSessionConfiguration\b|\bEnable-PSSessionConfiguration\b|\bDisable-PSSessionConfiguration\b|\bEnable-PSRemoting\b|\bInvoke-Command\b|\bNew-PSSession\b|\bGet-PSSession\b|\bRemove-PSSession\b|\bStart-Job\b|\bGet-Job\b|\bReceive-Job\b|\bStop-Job\b|\bWait-Job\b|\bRemove-Job\b|\bEnter-PSSession\b|\bExit-PSSession\b|\bNew-PSSessionOption\b|\bForEach-Object\b|\bWhere-Object\b|\bSet-PSDebug\b|\bSet-StrictMode\b|\bNew-Module\b|\bImport-Module\b|\bExport-ModuleMember\b|\bGet-Module\b|\bRemove-Module\b|\bNew-ModuleManifest\b|\bTest-ModuleManifest\b|\bAdd-PSSnapin\b|\bRemove-PSSnapin\b|\bGet-PSSnapin\b|\bExport-Console\b|\bFormat-List\b|\bFormat-Custom\b|\bFormat-Table\b|\bFormat-Wide\b|\bOut-Null\b|\bOut-Default\b|\bOut-Host\b|\bOut-File\b|\bOut-Printer\b|\bOut-String\b|\bOut-GridView\b|\bGet-FormatData\b|\bExport-FormatData\b|\bRegister-ObjectEvent\b|\bRegister-EngineEvent\b|\bWait-Event\b|\bGet-Event\b|\bRemove-Event\b|\bGet-EventSubscriber\b|\bUnregister-Event\b|\bNew-Event\b|\bAdd-Member\b|\bAdd-Type\b|\bCompare-Object\b|\bConvertTo-Html\b|\bConvertFrom-StringData\b|\bExport-CSV\b|\bImport-CSV\b|\bConvertTo-CSV\b|\bConvertFrom-CSV\b|\bExport-Alias\b|\bInvoke-Expression\b|\bGet-Alias\b|\bGet-Culture\b|\bGet-Date\b|\bGet-Host\b|\bGet-Member\b|\bGet-Random\b|\bGet-UICulture\b|\bGet-Unique\b|\bExport-PSSession\b|\bImport-PSSession\b|\bImport-Alias\b|\bImport-LocalizedData\b|\bSelect-String\b|\bMeasure-Object\b|\bNew-Alias\b|\bNew-TimeSpan\b|\bRead-Host\b|\bSet-Alias\b|\bSet-Date\b|\bStart-Sleep\b|\bTee-Object\b|\bMeasure-Command\b|\bUpdate-List\b|\bUpdate-TypeData\b|\bUpdate-FormatData\b|\bWrite-Host\b|\bWrite-Progress\b|\bNew-Object\b|\bSelect-Object\b|\bGroup-Object\b|\bSort-Object\b|\bGet-Variable\b|\bNew-Variable\b|\bSet-Variable\b|\bRemove-Variable\b|\bClear-Variable\b|\bExport-Clixml\b|\bImport-Clixml\b|\bConvertTo-XML\b|\bSelect-XML\b|\bWrite-Debug\b|\bWrite-Verbose\b|\bWrite-Warning\b|\bWrite-Error\b|\bWrite-Output\b|\bSet-PSBreakpoint\b|\bGet-PSBreakpoint\b|\bRemove-PSBreakpoint\b|\bEnable-PSBreakpoint\b|\bDisable-PSBreakpoint\b|\bGet-PSCallStack\b|\bSend-MailMessage\b|\bGet-TraceSource\b|\bSet-TraceSource\b|\bTrace-Command\b|\bStart-Transcript\b|\bStop-Transcript\b|\bAdd-Content\b|\bClear-Content\b|\bClear-ItemProperty\b|\bJoin-Path\b|\bConvert-Path\b|\bCopy-ItemProperty\b|\bGet-EventLog\b|\bClear-EventLog\b|\bWrite-EventLog\b|\bLimit-EventLog\b|\bShow-EventLog\b|\bNew-EventLog\b|\bRemove-EventLog\b|\bGet-ChildItem\b|\bGet-Content\b|\bGet-ItemProperty\b|\bGet-WmiObject\b|\bInvoke-WmiMethod\b|\bMove-ItemProperty\b|\bGet-Location\b|\bSet-Location\b|\bPush-Location\b|\bPop-Location\b|\bNew-PSDrive\b|\bRemove-PSDrive\b|\bGet-PSDrive\b|\bGet-Item\b|\bNew-Item\b|\bSet-Item\b|\bRemove-Item\b|\bMove-Item\b|\bRename-Item\b|\bCopy-Item\b|\bClear-Item\b|\bInvoke-Item\b|\bGet-PSProvider\b|\bNew-ItemProperty\b|\bSplit-Path\b|\bTest-Path\b|\bGet-Process\b|\bStop-Process\b|\bWait-Process\b|\bDebug-Process\b|\bStart-Process\b|\bRemove-ItemProperty\b|\bRemove-WmiObject\b|\bRename-ItemProperty\b|\bRegister-WmiEvent\b|\bResolve-Path\b|\bGet-Service\b|\bStop-Service\b|\bStart-Service\b|\bSuspend-Service\b|\bResume-Service\b|\bRestart-Service\b|\bSet-Service\b|\bNew-Service\b|\bSet-Content\b|\bSet-ItemProperty\b|\bSet-WmiInstance\b|\bGet-Transaction\b|\bStart-Transaction\b|\bComplete-Transaction\b|\bUndo-Transaction\b|\bUse-Transaction\b|\bNew-WebServiceProxy\b|\bGet-HotFix\b|\bTest-Connection\b|\bEnable-ComputerRestore\b|\bDisable-ComputerRestore\b|\bCheckpoint-Computer\b|\bGet-ComputerRestorePoint\b|\bRestart-Computer\b|\bStop-Computer\b|\bRestore-Computer\b|\bAdd-Computer\b|\bRemove-Computer\b|\bTest-ComputerSecureChannel\b|\bReset-ComputerMachinePassword\b|\bGet-Acl\b|\bSet-Acl\b|\bGet-PfxCertificate\b|\bGet-Credential\b|\bGet-ExecutionPolicy\b|\bSet-ExecutionPolicy\b|\bGet-AuthenticodeSignature\b|\bSet-AuthenticodeSignature\b|\bConvertFrom-SecureString\b|\bConvertTo-SecureString\b|\bAdd-QADProxyAddress\b|\bClear-QADProxyAddress\b|\bDisable-QADEmailAddressPolicy\b|\bEnable-QADEmailAddressPolicy\b|\bRemove-QADProxyAddress\b|\bSet-QADProxyAddress\b|\bAdd-QADCertificate\b|\bAdd-QADCertificateRevocationList\b|\bEdit-QADCertificate\b|\bExport-QADCertificate\b|\bExport-QADCertificateRevocationList\b|\bGet-QADPKIObject\b|\bGet-QADCertificate\b|\bGet-QADCertificateRevocationList\b|\bGet-QADLocalCertificateStore\b|\bImport-QADCertificate\b|\bImport-QADCertificateRevocationList\b|\bNew-QADLocalCertificateStore\b|\bPublish-QADCertificate\b|\bPublish-QADCertificateRevocationList\b|\bRemove-QADCertificate\b|\bRemove-QADCertificateRevocationList\b|\bRemove-QADLocalCertificateStore\b|\bRemove-QADPrivateKey\b|\bShow-QADCertificate\b|\bUnpublish-QADCertificate\b|\bUnpublish-QADCertificateRevocationList\b|\bWhere-QADCertificate\b|\bGet-QADManagedObject\b|\bGet-QARSWorkflowDefinition\b|\bNew-QARSAccessTemplateLink\b|\bNew-QADComputer\b|\bNew-QADGroup\b|\bNew-QADObject\b|\bNew-QADPasswordSettingsObject\b|\bNew-QADUser\b|\bRestore-QADDeletedObject\b|\bEnable-QADComputer\b|\bDisable-QADComputer\b|\bReset-QADComputer\b|\bSet-QARSAccessTemplateLink\b|\bSet-QADComputer\b|\bSet-QADGroup\b|\bSet-QADObject\b|\bSet-QADUser\b|\bEnable-QADUser\b|\bDisable-QADUser\b|\bUnlock-QADUser\b|\bPublish-QARSGroup\b|\bUnpublish-QARSGroup\b|\bApprove-QARSApprovalTask\b|\bGet-QARSLastOperation\b|\bGet-QARSWorkflowInstance\b|\bReject-QARSApprovalTask\b|\bGet-QADInactiveAccountsPolicy\b|\bGet-QADDiagnosticLogStatus\b|\bGet-QADProgressPolicy\b|\bSet-QADInactiveAccountsPolicy\b|\bSet-QADProgressPolicy\b|\bEnable-QADDiagnosticLog\b|\bDisable-QADDiagnosticLog\b|\bGet-QADGroupMember\b|\bGet-QADMemberOf\b|\bGet-QADPasswordSettingsObjectAppliesTo\b|\bGet-QARSAccessTemplate\b|\bGet-QARSAccessTemplateLink\b|\bGet-QARSApprovalTask\b|\bGet-QARSOperation\b|\bGet-QADComputer\b|\bGet-QADObject\b|\bGet-QADGroup\b|\bGet-QADPasswordSettingsObject\b|\bGet-QADUser\b|\bGet-QADRootDSE\b|\bRemove-QARSAccessTemplateLink\b|\bAdd-QADMemberOf\b|\bAdd-QADPasswordSettingsObjectAppliesTo\b|\bConvert-QADAttributeValue\b|\bDeprovision-QADUser\b|\bGet-QADObjectSecurity\b|\bGet-QADPermission\b|\bGet-QADPSSnapinSettings\b|\bMove-QADObject\b|\bRemove-QADMemberOf\b|\bRemove-QADObject\b|\bRemove-QADPermission\b|\bRemove-QADPasswordSettingsObjectAppliesTo\b|\bRename-QADObject\b|\bAdd-QADPermission\b|\bSet-QADObjectSecurity\b|\bSet-QADPSSnapinSettings\b|\bAdd-QADGroupMember\b|\bRemove-QADGroupMember\b|\bConnect-QADService\b|\bDisconnect-QADService\b|\bGet-AppLockerFileInformation\b|\bGet-AppLockerPolicy\b|\bNew-AppLockerPolicy\b|\bSet-AppLockerPolicy\b|\bTest-AppLockerPolicy\b|\bAdd-BitsFile\b|\bComplete-BitsTransfer\b|\bGet-BitsTransfer\b|\bRemove-BitsTransfer\b|\bResume-BitsTransfer\b|\bSet-BitsTransfer\b|\bStart-BitsTransfer\b|\bSuspend-BitsTransfer\b|\bGet-TroubleshootingPack\b|\bInvoke-TroubleshootingPack\b|\bWSMan\b|\bAlias\b|\bEnvironment\b|\bFileSystem\b|\bFunction\b|\bRegistry\b|\bVariable\b|\bCertificate\b|\babout_BITS_Cmdlets\b|\babout_aliases\b|\babout_Arithmetic_Operators\b|\babout_arrays\b|\babout_Assignment_Operators\b|\babout_Automatic_Variables\b|\babout_Break\b|\babout_command_precedence\b|\babout_Command_Syntax\b|\babout_Comment_Based_Help\b|\babout_CommonParameters\b|\babout_Comparison_Operators\b|\babout_Continue\b|\babout_Core_Commands\b|\babout_data_sections\b|\babout_debuggers\b|\babout_do\b|\babout_environment_variables\b|\babout_escape_characters\b|\babout_eventlogs\b|\babout_execution_policies\b|\babout_For\b|\babout_Foreach\b|\babout_format.ps1xml\b|\babout_functions\b|\babout_functions_advanced\b|\babout_functions_advanced_methods\b|\babout_functions_advanced_parameters\b|\babout_functions_cmdletbindingattribute\b|\babout_hash_tables\b|\babout_History\b|\babout_If\b|\babout_jobs\b|\babout_job_details\b|\babout_join\b|\babout_Language_Keywords\b|\babout_Line_Editing\b|\babout_locations\b|\babout_logical_operators\b|\babout_methods\b|\babout_modules\b|\babout_objects\b|\babout_operators\b|\babout_parameters\b|\babout_Parsing\b|\babout_Path_Syntax\b|\babout_pipelines\b|\babout_preference_variables\b|\babout_profiles\b|\babout_prompts\b|\babout_properties\b|\babout_providers\b|\babout_pssessions\b|\babout_pssession_details\b|\babout_PSSnapins\b|\babout_Quoting_Rules\b|\babout_Redirection\b|\babout_Ref\b|\babout_regular_expressions\b|\babout_remote\b|\babout_remote_FAQ\b|\babout_remote_jobs\b|\babout_remote_output\b|\babout_remote_requirements\b|\babout_remote_troubleshooting\b|\babout_requires\b|\babout_Reserved_Words\b|\babout_Return\b|\babout_scopes\b|\babout_scripts\b|\babout_script_blocks\b|\babout_script_internationalization\b|\babout_Session_Configurations\b|\babout_Signing\b|\babout_Special_Characters\b|\babout_split\b|\babout_Switch\b|\babout_Throw\b|\babout_transactions\b|\babout_trap\b|\babout_try_catch_finally\b|\babout_types.ps1xml\b|\babout_type_operators\b|\babout_Variables\b|\babout_While\b|\babout_wildcards\b|\babout_Windows_PowerShell_2.0\b|\babout_Windows_PowerShell_ISE\b|\babout_WMI_Cmdlets\b|\babout_WS-Management_Cmdlets\b|\bdefault\b)";


public String setse(String src, Boolean c)
{
String line = src;
Regex r = new Regex(keyList,RegexOptions.IgnoreCase);
line = r.Replace(line,"[color=Blue]$1[/color]");//关键字

Regex r1 = new Regex(@"(?<=[-,.!+/*\s=&)(\[]|^)(\$\w+)(?=[-!.,+/*\s=&)(\[]|$)");
line = r1.Replace(line, "[color=darkred]$1[/color]"); //变量

Regex r2 = new Regex(@"(?<=[""'])\s*([^'""]*)(?=['""])");//
//Regex r2 = new Regex(@"((?<=[""'])\s*[^'""]*(?=['""]))");// 双引号里的字符
line = r2.Replace(line,"[color=magenta]$1[/color]");
if (c)
{

return line + "\n";

}
else
{
return line;
}

}

private void paseToolStripMenuItem_Click(object sender, EventArgs e)
{

}

private void pasteToolStripMenuItem_Click(object sender, EventArgs e)
{
// Declares an IDataObject to hold the data returned from the clipboard.
// Retrieves the data from the clipboard.
IDataObject iData = Clipboard.GetDataObject();

// Determines whether the data is in a format you can use.
if (iData.GetDataPresent(DataFormats.Text))
{
// Yes it is, so display it in a text box.
richTextBox1.Text = (String)iData.GetData(DataFormats.Text);

}
}

private void copyToolStripMenuItem_Click(object sender, EventArgs e)
{
 // Takes the selected text from a text box and puts it on the clipboard.
   if(richTextBox2.Text != "")
Clipboard.SetDataObject(richTextBox2.Text);
}




}
}

 

转载于:https://www.cnblogs.com/onepc/archive/2011/11/08/2240660.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值