какие примеры кода объявляют функцию exec string
Форум
Справочник
Синтаксис
Аргументы
Описание, примеры
Выполняет поиск совпадений в указанной строке. Возвращает массив результатов или null
Если вы хотите просто проверить, есть ли совпадения, используйте для этого метод test или String#search.
Если указан флаг «g», то повторный вызов exec будет давать следующее совпадение.
result1 Вложенный массив совпадений [«abc», «bc», «c»] regexp.lastIndex после result1 3 result2 Вложенный массив совпадений [«aabbcc», «bbcc», «cc»] regexp.lastIndex после result2 10
Например, следующий скрипт выдает все совпадения:
Вы можете вызвать exec при неявном определении объекта RegExp:
Сравните примеры в хелпе с вашим кодом. Я думаю у вас регулярка в кавычках, поэтому и не работает. Мой пример:
var reg = /яхту/i;
var ex = reg.exec(‘Хуй на руль и поехали на ваську смотреть на яхту Обрамовича!’);
document.writeln(ex);
Господа и дамы, помогите пожалуйста :
Есть строка q23123123 bababa q23123123
Как мне выделить строку bababa
я пытаюсь вот так:
s1″>\s*\S*\w*\W*
но мне возвращается «>bababa
возможно ли выделить только bababa
а чем \[a-b]+ не устраивает? если речь о регекспе идет
хм, если известны эти части «q23123123».. я бы сделал вот так:
работает
других способов сходу придумать не могу к сожалению с этим способом пробелы по краям остались.
Функция exec() в Python
Функция exec() в Python обеспечивает поддержку динамического выполнения кода.
object – это должна быть строка или объект кода. Если это строка, то она анализируется, как блок операторов Python и затем выполняется.
globals – используется для указания глобальных функций, доступных для выполнения функцией exec(). Это должен быть словарь. Если __builtins__ не определен, то для функции exec доступны все встроенные функции.
locals – используется для указания доступных локальных функций и переменных. Это может быть любой объект отображения. Однако словарь предпочтительнее из-за сходства с глобальными переменными.
Функция exec() возвращает None. Поэтому его нельзя использовать с операторами return и yield.
Сравнение exec() и eval()
Функции exec() и eval() очень похожи. Их использование и поддержка динамического выполнения кода также очень похожи.
Однако есть одно важное различие между функциями exec() и eval(). Функция exec() ничего не возвращает, тогда как функция eval() оценивает выражение и возвращает значение в вызывающий код.
Пример
Давайте посмотрим на простой пример функции python exec().
Выполнение динамического кода
Давайте посмотрим на другой пример, где пользователь вводит код, который будет выполняться нашей программой.
Обратите внимание, что я использую sqrt() из математического модуля, print() и min() – встроенные функции.
Угрозы безопасности
Глобальные и локальные переменные
Прежде чем мы определимся с функциями, которые должны быть доступны для exec(), рекомендуется получить список доступных функций и модулей с помощью функции dir().
Это много функций, начиная от встроенного модуля, математического модуля и нашей определенной функции square_root.
Посмотрим, что произойдет, если мы предоставим значение globals как пустой словарь.
Таким образом, встроенные функции доступны, если для глобальных переменных нет ключа. Давайте посмотрим, как указать доступ только к нескольким функциям из модуля builtins.
Давайте посмотрим на другой пример, в котором мы определим значения параметров как глобальных, так и локальных.
Давайте посмотрим на последний пример, в котором мы предоставим доступ только к нескольким функциям математического модуля.
Мы можем указать собственное имя для сопоставления с любой функцией, например, мы определили squareRoot для сопоставления с функцией sqrt.
Обратите внимание, что встроенные функции доступны, потому что я не исключил их явно. Итак, лучший способ определить exec():
Пример вывода будет:
Теперь ошибка возникает, потому что функция max() недоступна для функции exec().
Как и eval(), функция python exec() очень мощная. Вы не должны позволять выполнять какой-либо ненадежный код с помощью exec(), так как это может действительно навредить вашей системе.
Метод exec() в Python
Автор: Кольцов Д · Опубликовано 17.11.2020 · Обновлено 17.11.2020
Метод exec() выполняет динамически созданную программу, которая представляет собой строку или объект кода.
Метод принимает три параметра:
exec() не возвращает никакого значения, он возвращает None.
Пример 1
Пример 2: Разрешить пользователю вводить данные
Если вы хотите получить код Python от пользователя, который позволяет использовать многострочный код (с использованием ‘\ n’), вы можете использовать метод compile() перед использованием exec().
На что обратить внимание?
Рассмотрим ситуацию: вы используете систему Unix (macOS, Linux и т. Д.) И импортировали модуль ОС. Модуль os предоставляет переносимый способ использования функций операционной системы, таких как чтение или запись файла.
Если вы используете в своем коде exec (input()), рекомендуется проверить, какие переменные и методы может использовать пользователь. Вы можете увидеть, какие переменные и методы доступны, используя метод dir().
Ограничение использования доступных методов и переменных в exec()
Чаще всего все доступные методы и переменные, используемые в exec(), могут не понадобиться или даже могут иметь брешь в безопасности. Вы можете ограничить использование этих переменных и методов, передав необязательные глобальные и локальные параметры (словари) методу exec().
Параметры globals и locals опущены
Если оба параметра опущены (как в наших предыдущих примерах), код, ожидаемый от exec(), выполняется в текущей области. Вы можете проверить доступные переменные и методы, используя следующий код:
Передача глобальных параметров
Параметры globals и locals (словари) используются для глобальных и локальных переменных соответственно. Если словарь locals не указан, по умолчанию используется словарь globals. Это означает, что глобальные переменные будут использоваться как для глобальных, так и для локальных переменных.
Передача пустого словаря в качестве глобального параметра
Если вы передаете пустой словарь в качестве глобальных переменных, объекту доступны только __builtins__ (первый параметр для exec()). Несмотря на то, что мы импортировали математический модуль в вышеуказанную программу, попытка доступа к любой из функций, предоставляемых математическим модулем, вызовет исключение.
Обеспечение доступности определенных методов
Здесь код, который выполняется exec(), может также иметь методы sqrt() и pow() вместе с __builtins__.
Название метода можно изменить по своему желанию.
В приведенной выше программе squareRoot() вычисляет квадратный корень (функциональность аналогична sqrt()). Однако попытка использования sqrt() вызовет исключение.
Передача как глобальных, так и локальных словарей
Вы можете сделать необходимые функции и переменные доступными для использования, передав словарь locals. Например:
Здесь только два встроенных метода print() и dir() могут быть выполнены методом exec().
Важно отметить, что exec() выполняет код и не возвращает никакого значения (не возвращает None). Следовательно, вы не можете использовать операторы return и yield вне определений функций.
Русские Блоги
Python eval и exec и связанные приложения-функции
Поскольку я только начал вести блог, у меня ограниченные знания и опыт. Если что-то не так, я хотел бы, чтобы читатели меня поправили. Я был бы очень благодарен. Я также надеюсь воспользоваться этой платформой, чтобы оставить заметки для изучения, чтобы извлечь уроки из прошлого.
Кратко поговорим о двух функциях eval () и exec () и нескольких связанных с ними функциях, таких как globals (), locals () и compile ():
1. Функция eval
Роль функции:
Вычислить значение указанного выражения. Другими словами, код Python, который должен быть выполнен, может быть только выражением одной операции (обратите внимание, что eval не поддерживает никаких форм операции присваивания), а не сложной логикой кода, которая похожа на лямбда-выражения.
Определение функции:
Описание параметра:
возвращаемое значение:
Примеры:
Результат вывода:
Пояснение к выходному результату:
2. функция exec
Роль функции:
Динамически выполнять код Python. Другими словами, exec может выполнять сложный код Python, в отличие от функции eval, которая может только вычислять значение выражения.
Определение функции:
Описание параметра:
возвращаемое значение:
Возвращаемое значение функции exec всегда равно None.
Разница между функцией eval () и функцией exec ():
Пример 1:
Попробуем заменить функцию eval в примере 1 на функцию exec:
Результат вывода:
Как мы уже сказали, возвращаемое значение функции exec всегда равно None.
Пример 2:
Результат вывода:
Пояснение к выходному результату:
Первые два вывода аналогичны процессу выполнения функции eval, описанной выше, и не объясняют слишком много. Что касается последнего числа 34, мы видим, что: x = 1, y = 3 не вызывает сомнений. Что касается того, почему z по-прежнему 30 вместо 4, это на самом деле очень просто, нам нужно иметь дело только с процессом выполнения кода, процесс выполнения эквивалентен:
def func () :
y = 3
z = 4
3. Функции Globals () и locals ()
Определение функции и описание функции:
Сначала посмотрите на определение и описание этих двух функций.
описание: Return a dictionary representing the current global symbol table. This is always the dictionary of the current module (inside a function or method, this is the module where it is defined, not the module from which it is called).
перевод: Возвращает словарь, представляющий текущую глобальную таблицу идентификаторов. Это всегда словарь текущего модуля (внутри функции или метода это относится к модулю, который определяет функцию или метод, а не к модулю, который вызывает функцию или метод)
описание: Update and return a dictionary representing the current local symbol table. Free variables are returned by locals() when it is called in function blocks, but not in class blocks.
Note The contents of this dictionary should not be modified; changes may not affect the values of local and free variables used by the interpreter.
перевод:Обновить и вернуть словарь, представляющий текущую таблицу локальных идентификаторов. Когда свободная переменная вызывается внутри функции, она будет возвращена функцией locals (); когда свободная переменная не вызывается, она не будет возвращена функцией locals ().
нота: Содержимое словаря, возвращаемого функцией locals (), не должно изменяться; если оно должно быть изменено, это не должно влиять на локальные переменные и свободные переменные, используемые интерпретатором.
подводить итоги:
Пример 1:
Пример 2:
G = globals()
L = locals()
print (id( G ), type ( G ), G )
print (id( L ), type ( L ), L )
Адреса памяти G и L, напечатанные выше, одинаковы, что указывает на то, что возвращаемое значение locals () на уровне модуля совпадает с возвращаемым значением globals ().
4. Функция компиляции
Роль функции:
Скомпилируйте исходный код в объект кода или объект AST. Кодовый объект может быть выполнен с помощью функции exec () или вычислен и оценен с помощью функции eval ().
Определение функции:
Описание параметра:
Примеры:
a = exec(code_exec)
b = eval(code_eval)
c = exec(code_single)
d = eval(code_single)
5. Связь между этими функциями
Результаты, возвращаемые функцией comiple (), функцией globals (), функцией locals (), могут использоваться как параметры функций eval () и exec ().
Кроме того, мы можем судить, существует ли (определена) глобальная переменная, исходя из того, содержит ли возвращаемое значение функции globals () определенный ключ.
Интеллектуальная рекомендация
Ожидание загрузки HTML DOM
Рендеринг и последовательность операций браузера примерно таковы Разбор HTML завершен Внешние скрипты и таблицы стилей загружены Сценарий анализируется и выполняется в документе HTML DOM полностью пос.
HDOJ 2028
HDOJ #2028 Поскольку эта тема является наименее распространенной, то требуется только максимальное значение данных, и множественные изменения будут изменены. Множественное из множества. (Также одинако.
Numpy упражнения (2)
Демо-пример интеграции springmvc и dubbo
Прежде всего, если вы хотите использовать даббо, вам необходимо загрузить центр регистрации, чаще всего используется zookeeper. Итак, сначала нам нужно скачать и установить zookeeper Адрес загрузки: h.
Среда разработки Android об ионной среде
1 Настройка среды разработки 1.1 Описание задачи 1.1.1 Введение задачи Настройте ионную среду разработки, создайте ионный проект, используйте браузер для запуска проекта и запускайте приложения в эмул.
Какие примеры кода объявляют функцию exec string
exec — Исполняет внешнюю программу
Описание
Список параметров
Возвращаемые значения
Для получения вывода исполняемой программы, убедитесть, что параметр output инициализирован и используется.
Примеры
Пример #1 Пример функции exec()
Примечания
Если вы собираетесь передавать функции пользовательские данные, используйте функции escapeshellarg() или escapeshellcmd() для того, чтобы пользователи не смогли обмануть систему, запустив произвольную команду.
Если вы собираетесь использовать эту функцию в программе, работающей в качестве демона, убедитесь, что стандартный вывод функции направлен в файл или другой поток, в противном случае PHP зависнет вплоть до конца выполнения программы.
Замечание: В случае работы в безопасном режиме, вы можете запускать что-либо только в пределах safe_mode_exec_dir. В настоящее время по практическим причинам запрещено использование .. в качестве компонента пути к исполняемому файлу.
Смотрите также
Коментарии
From what I’ve gathered asking around, there is no way to pass back a perl array into a php script using the exec function.
The suggestion is to just print out your perl array variables at the end of your script, and then grabbing each array member from the array returned by the exec function. If you will be passing multiple arrays, or if you need to keep track of array keys as well as values, then as you print each array or hash variable at the end of your perl script, you should concatenate the value with the key and array name, using an underscore, as in:
foreach (@array) print «(array name)_(member_key)_($_)» ;
Then you would simply iterate through the array returned by the exec function, and split each variable along the underscore.
Here I like to especially thank Marat for the knowledge. Hope this is useful to others in search for similar answer!
I too wrestled with getting a program to run in the background in Windows while the script continues to execute. This method unlike the other solutions allows you to start any program minimized, maximized, or with no window at all. llbra@phpbrasil’s solution does work but it sometimes produces an unwanted window on the desktop when you really want the task to run hidden.
start Notepad.exe minimized in the background:
This is the second time this one got me, I thought someone else might find this note useful too.
The solution is to scan all file handles from 3 on up and close them all. Remember that handles 0, 1, and 2 are standard input, standard output, and standard error.
exec strips trailing whitespace off the output of a command. This makes it impossible to capture signifigant whitespace. For example, suppose that a program outputs columns of tab-delimited text, and the last column contains empty fields on some lines. The trailing tabs are important, but get thrown away.
If you need to preserve trialing whitespace, you must use popen() instead.
Same solution can apply to system and passthru as well.
Create a shell script (ex. runscript.sh) which contains the execution line for the script you are trying to run in the background.
The runscript.sh is run by an exec() call without the redirect string, which is now placed in the runscript.sh.
runscript.sh will return almost immediately because output of the original script is redirected, and so will not hang your browser and the script runs fine in the background.
(This is for linux users only).
This small class is made so you can keep in track of your created processes ( meaning start/stop/status ).
You may use it to start a process or join an exisiting PID process.
[NOTE BY danbrown AT php DOT net: The following is a Linux script that the contributor of this note suggests be placed in a file named ‘pstools.inc.php’ to execute a process, check if a process exists, and kill a process by ID. Inspired by the Windows version at http://php.net/exec#59428 ]
Took quite some time to figure out the line I am going to post next. If you want to execute a command in the background without having the script waiting for the result, you can do the following:
First of all: put the full path to the php binary, because this command will run under the apache user, and you will probably not have command alias like php set in that user.
Seccond: Note 2 things at the end of the command string: the ‘2>&1’ and the ‘&’. The ‘2>&1’ is for redirecting errors to the standard IO. And the most important thing is the ‘&’ at the end of the command string, which tells the terminal not to wait for a response.
Third: Make sure you have 777 permissions on the ‘log_file.log’ file
In Windows, exec() issues an internal call to «cmd /c your_command». This implies that your command must follow the rules imposed by cmd.exe which includes an extra set of quotes around the full command:
Current PHP versions take this into account and add the quotes automatically, but old versions didn’t.
Apparently, the change was made in PHP/5.3.0 yet not backported to 5.2.x because it’s a backwards incompatible change. To sum up:
— In PHP/5.2 and older you have to surround the full command plus arguments in double quotes
— In PHP/5.3 and greater you don’t have to (if you do, your script will break)
If you are interested in the internals, this is the source code:
sprintf(cmd, «%s /c \»%s\»», TWG(comspec), command);
It can be found at http://svn.php.net/viewvc/ (please find php/php-src/trunk/TSRM/tsrm_win32.c, the comment system doesn’t allow the direct link).
I was trying to get an acceslist from a remote computer by executing cacls and parse it in php, all in a Windows environment with Apache. First i discovered psexec.exe from Windows SysInternals.
But with the following line, I didn´t get anything, it get hunged, although from the command line it worked nice:
(I added this user to the administrators group to avoid permissions problems but its not recommended. )
It worked! And it may work with IIS too so try it if you have the same poblem.
Hope this helps someone, and sorry for my english
Append «2>&1» to the end of your command, for example:
I tried to execute a command in background under Windows.
After struggling for hours with all these half ready examples I would like to share the syntax I found working (for windows at least). This is not tested under Linux as there are more elegant ways to spawn a process.
Based on the function from Arno van den Brink.
Quotation marks are mandatiory for window title. Otherwise windows thinks this is the program name.
Weired, but «Hey! it’s Windows!» 🙂