Когда bash интерпретирует командную строку, он ищет команды в местах, описанных в переменной среды $PATH
. Чтобы увидеть его, введите:
echo $PATH
У вас будет несколько путей, разделенных двоеточиями. Как вы увидите, текущий путь .
обычно не находится в $PATH
. Поэтому Bash не может найти вашу команду, если она находится в текущем каталоге. Вы можете изменить его, если:
PATH=$PATH:.
Эта строка добавляет текущий каталог в $PATH
, чтобы вы могли:
manage.py syncdb
Не рекомендуется, поскольку у него есть безопасность проблема, плюс вы можете иметь странное поведение, так как .
зависит от того, в каком каталоге вы находитесь:)
Избегайте:
PATH=.:$PATH
Как вы можете «замаскировать» какую-то стандартную команду и откройте дверь для нарушения безопасности :)
Только мои два цента.
Вы не даете достаточно подробностей. Поскольку ваше первое выражение работает, я предполагаю, что вы используете режим Singleline
.
Следующее мое предположение состоит в том, что эта строка является частью большей строки.
^
соответствует начало строки по умолчанию
$
по умолчанию соответствует концу строки.
Теперь, поскольку ваша строка содержит материал до и после, вам нужно изменить это поведение по умолчанию:
С модификатором Multiline
, ^
соответствует началу строки, а $
- концу строки. Дополнительную информацию см. В документации .
Итак, ваше регулярное выражение должно выглядеть примерно так:
Regex regx = new Regex("(?<=^(\s*Owner))(.|\n)*?(?=\s*Information$)", RegexOptions.Singleline | RegexOptions.Multiline);