Соответствие регулярному выражению, только если все слова в строке начинаются с указанного символа c - PullRequest
0 голосов
/ 08 апреля 2020

Я использую Google Big Query sql строковую функцию REGEXP_CONTAINS(value, regexp).

Попытка написать регулярное выражение для функции, возвращающей false, если какие-либо слова в определенном строковом поле не начинаются с +.

Или, в качестве альтернативы, true, если все слова в строковом поле начинаются с +.

Например, "+ test + list + of + words" пройдет. '+ список проверок + из + слов' потерпит неудачу.

(Можно предположить, что слова содержат только буквы c, отличные от начального +).

Я написал это регулярное выражение: ^(\+\w+\s?)+$, которое работает на основе приведенных выше строк тестирования и нескольких вариантов. Насколько я понимаю, это означает, что вся строка должна состоять из повторяющегося шаблона:

  • Одиночный '+'
  • С последующим любым числом alphanumeri c
  • С последующим необязательным пробелом (необязательно, так как в последнем слове нет пробела после него)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...