Это очень сработало для меня:
/// <summary>
/// Kill a process, and all of its children, grandchildren, etc.
/// </summary>
/// <param name="pid">Process ID.</param>
private static void KillProcessAndChildren(int pid)
{
// Cannot close 'system idle process'.
if (pid == 0)
{
return;
}
ManagementObjectSearcher searcher = new ManagementObjectSearcher
("Select * From Win32_Process Where ParentProcessID=" + pid);
ManagementObjectCollection moc = searcher.Get();
foreach (ManagementObject mo in moc)
{
KillProcessAndChildren(Convert.ToInt32(mo["ProcessID"]));
}
try
{
Process proc = Process.GetProcessById(pid);
proc.Kill();
}
catch (ArgumentException)
{
// Process already exited.
}
}
Протестировано на Visual Studio 2015 Update 2
в Win7 x64
.
Добавлена проверка процесса простоя системы if (pid == 0)
Нужно добавить ссылку на пространство имен System.Management
, см. Комментарий от @MinimalTech ниже. Если у вас установлен ReSharper, он предложит вам сделать это автоматически.
"В режиме по умолчанию Dot (.) соответствует любому символу, кроме новой строки. Если указан флаг DOTALL, это соответствует любому символу, включая новую строку." (python Doc)
blockquote>Итак, если вы хотите оценить точную букву, я думаю, вы должны поместить ее в квадратные скобки:
>>> p = re.compile(r'\b(\w+[.]\w+)') >>> resp = p.search("blah blah blah test.this@gmail.com blah blah") >>> resp.group() 'test.this'
В вашем regex
вам нужно избежать dot(.) - "\."
или использовать его внутри character class - "[.]"
, так как это метасимвол в регулярном выражении, который соответствует любому символу.
Кроме того, вам нужно \w+
вместо \w
для соответствия одному или нескольким словам.
Теперь, если вы хотите содержание test.this
, тогда split
не то, что вам нужно. split
разделит вашу строку вокруг test.this
. Например: -
>>> re.split(r"\b\w+\.\w+@", s)
['blah blah blah ', 'gmail.com blah blah']
Вы можете использовать re.findall
: -
>>> re.findall(r'\w+[.]\w+(?=@)', s) # look ahead
['test.this']
>>> re.findall(r'(\w+[.]\w+)@', s) # capture group
['test.this']
A .
в регулярном выражении является метасимволом, он используется для соответствия любому символу. Чтобы соответствовать буквальной точке, вам нужно ее избежать, поэтому \.