О регулярном выражении '(\ba\b) \B\1\B'

BST не распознается как имя часового пояса. Он используется как аббревиатура в выводе, но его нельзя использовать для обозначения часового пояса. Большинство программ не проверяют имена часовых поясов и по умолчанию молча используют GMT, если имя часового пояса не распознано.

Аббревиатуры, такие как BST, CET, EST и т. д., не всегда хорошо определены, -и иногда неоднозначны (Североамериканское или Австралийское восточное стандартное время? ). Они имеют смысл только в данном регионе, тогда как конфигурация часового пояса обычно предназначена для использования во всем мире. Кроме того, такая аббревиатура, как BST, на самом деле не обозначает часовой пояс, а только время, которое находится в определенном часовом поясе в течение части года (Британия, пока действует летнее время ). Таким образом, вы должны использовать недвусмысленные обозначения, большинство из которых следуют образцу континент/город. В типичных системах Linux и, я думаю, во многих других вариантах Unix вы можете увидеть, какие сокращения доступны, заглянув в каталог /usr/share/zoneinfo.

Поэтому вместо использования GMTзимой и BSTлетом используйте Europe/London.

0
26.09.2019, 12:19
1 ответ

Вам не хватает z?

$ echo a zaz | grep -P '(\ba\b) \B\1\B'
- no output -
$ echo a zaz | grep -P '(\ba\b) z\B\1\Bz'
a zaz

Точно так же, как \bне включает дополнительные символы в круглых скобках, \Bтакже не соответствует дополнительным символам. Таким образом, в регулярном выражении нет ничего, что позволило бы сопоставить z вокруг a.

2
28.01.2020, 02:29

Теги

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