Регулярное выражение Javascript для соответствия только целому слову, ограниченному только пробелом

Шаблоны должны использоваться в заголовках, потому что компилятор должен создавать экземпляры разных версий кода в зависимости от параметров, заданных / выведенных для параметров шаблона. Помните, что шаблон не представляет собой код напрямую, а шаблон для нескольких версий этого кода. Когда вы компилируете функцию non-template в файле .cpp, вы компилируете конкретную функцию / класс. Это не относится к шаблонам, которые могут быть созданы с использованием разных типов, а именно, если при замене параметров шаблона конкретными типами необходимо исправить конкретный код.

Была функция с ключевым словом export, которая была предназначенный для отдельной компиляции. Функция export устарела в C++11 и, AFAIK, только один компилятор реализовал ее. Вы не должны использовать export. Отдельная компиляция невозможна в C++ или C++11, но, возможно, в C++17, если понятия в нее входят, мы могли бы иметь некоторый способ отдельной компиляции.

Для отдельной компиляции, которая должна быть достигнута, разделить проверка шаблона тела должна быть возможна. Кажется, что решение возможно с концепциями. Взгляните на этот документ , недавно представленный на совещании по стандартам. Я думаю, что это не единственное требование, поскольку вам все равно необходимо создать код кода шаблона в коде пользователя.

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

30
задан roundrobin 22 January 2018 в 21:09
поделиться

3 ответа

Вы можете попробовать: \ sBlah \ s .

Или, если вы разрешите начало и конец привязки, (^ | \ s) Blah (\ s | $)

Это будет соответствовать "Blah" отдельно или каждому Blah в «Blah and Blah»

См. Также

  • regular-expressions.info/Character classes и Якоря
    • \ s означает «пробел персонаж".
    • Каретка ^ соответствует позиции перед первым символом в строке
    • Аналогично, $ соответствует позиции сразу после последнего символа в строке

Вариант просмотра вперед

Если вы хотите сопоставить оба Бла в «Бла-Бла» , то, поскольку один пробел «разделяется» между двумя вхождениями, вы должны использовать утверждения. Примерно так:

(^|\s)Blah(?=\s|$)

См. Также


Только захват Бла

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

Если вы хотите только Бла , в идеале было бы неплохо заглянуть назад:

(?<=^|\s)Blah(?=\s|$)

Но поскольку Javascript не поддерживает его, вы можете вместо этого написать:

(?:^|\s)(Blah)(?=\s|$)

Теперь Бла будет записан в \ 1 без начальных пробелов.

См. Также

51
ответ дан 27 November 2019 в 20:13
поделиться

Попробуйте \ sBlah \ s - это будет соответствовать любой форме пробелов с обеих сторон.

3
ответ дан 27 November 2019 в 20:13
поделиться

(^|\s)Blah(\s|$) должно сработать, однако оно также выделит пробелы, если вам нужно только слово, вы можете сделать следующее: (^|\s)(Blah)(\s|$) и возьмите группу 2 ($2 в ruby).

Если вам нужна помощь с RegEx, посмотрите: http://www.gskinner.com/RegExr/

2
ответ дан 27 November 2019 в 20:13
поделиться
Другие вопросы по тегам:

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