2016-08-10 6 views
1

знает любой, почемуBSD с GNU выраж

expr "4" : '-\?[0-9]\+$' 

возвращает 0 на Mac OS X и 1 на Linux?

Факт: Mac использует BSD выраж Linux использует GNU

К сожалению, я первоначально набраны

expr "4" : '-\?[0-9]+$' 
+3

Он выводит 0 в Linux, а также. – chepner

+0

Извините, у меня была опечатка. – frankliuao

+0

Ждем ответа – frankliuao

ответ

1

expr занимает основное регулярное выражение, а не расширенное регулярное выражение. (Для определения каждого из них см. http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html).

Основные регулярные выражения не поддерживают либо операторы , и +; вам нужно использовать границы.

  • ? осуществляется с \{0,1\} (от 0 до 1 вхождений)
  • + реализуется с \{1,\} (1 или более вхождений)

GNU expr появляется, чтобы позволить им как продолжение, если они экранируются ,

Ниже портативный вызов, который должен работать в любой POSIX-совместимой реализации expr:

expr "4" : '-\{0,1\}[0-9]\{1,\}$' 
+0

Это было очень, очень ясно !!! – frankliuao

Смежные вопросы