Многострочное регулярное выражение не работает

Трудная часть состоит в том, чтобы определить этот странный путь. Как только вы правильно запомните его, вы сможете что-то с ним делать. Я буду использовать этот документ, чтобы получить его, и я определю его как some strange/p"at\nh'/, чтобы иметь возможность работать локально (нет /в начале):

$ p="$(cat<<EOF
some strange/p"at\nh'/
EOF
)"
$ echo "$p"
some strange/p"at\nh'/
$ mkdir -p -- "$p"
tomasz@tomasz-laptop-f:~/x$ stat -- "$p"
  File: some strange/p"at\nh'/
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: fe05h/65029d    Inode: 4983105     Links: 2
Access: (0755/drwxr-xr-x)  Uid: ( 1000/  tomasz)   Gid: ( 1000/  tomasz)
Access: 2019-03-06 08:50:05.116674683 +0100
Modify: 2019-03-06 08:50:05.116674683 +0100
Change: 2019-03-06 08:50:05.116674683 +0100
 Birth: -
1
20.09.2019, 19:01
1 ответ

Bash поддерживает расширенные регулярные выражения POSIX (ERE ), не совместимые с Perl -регулярные выражения (PCRE ). В частности, (?x)и (?:...)являются PCRE.

На первый взгляд, версия с одной строкой -должна работать, если вы просто замените (?:...)на (...). Функция «игнорировать пробелы», предоставляемая модификатором Perl x, недоступна в расширенных регулярных выражениях.

См. также:Почему мое регулярное выражение работает в X, но не в Y?

3
27.01.2020, 23:22

Теги

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