Используя re.search () вместо re.match (), чтобы соответствовать только началу строки [duplicate]

Когда bash интерпретирует командную строку, он ищет команды в местах, описанных в переменной среды $PATH. Чтобы увидеть его, введите:

echo $PATH

У вас будет несколько путей, разделенных двоеточиями. Как вы увидите, текущий путь . обычно не находится в $PATH. Поэтому Bash не может найти вашу команду, если она находится в текущем каталоге. Вы можете изменить его, если:

PATH=$PATH:.

Эта строка добавляет текущий каталог в $PATH, чтобы вы могли:

manage.py syncdb

Не рекомендуется, поскольку у него есть безопасность проблема, плюс вы можете иметь странное поведение, так как . зависит от того, в каком каталоге вы находитесь:)

Избегайте:

PATH=.:$PATH

Как вы можете «замаскировать» какую-то стандартную команду и откройте дверь для нарушения безопасности :)

Только мои два цента.

1
задан Alan Moore 31 March 2014 в 12:44
поделиться

1 ответ

Вы не даете достаточно подробностей. Поскольку ваше первое выражение работает, я предполагаю, что вы используете режим Singleline.

Следующее мое предположение состоит в том, что эта строка является частью большей строки.

^ соответствует начало строки по умолчанию

$ по умолчанию соответствует концу строки.

Теперь, поскольку ваша строка содержит материал до и после, вам нужно изменить это поведение по умолчанию:

С модификатором Multiline, ^ соответствует началу строки, а $ - концу строки. Дополнительную информацию см. В документации .

Итак, ваше регулярное выражение должно выглядеть примерно так:

Regex regx = new Regex("(?<=^(\s*Owner))(.|\n)*?(?=\s*Information$)", RegexOptions.Singleline | RegexOptions.Multiline);
4
ответ дан Liath 27 August 2018 в 00:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: