Регулярное выражение для разбора строки после второй точки с запятой и перед первым дефисом - PullRequest
0 голосов
/ 09 января 2019

Я пишу регулярное выражение в SQL на Google Spanner. Ниже приведен сценарий:

У меня есть строка ABC : DEP : 050-G&H Sample - IJ, где я хочу проанализировать 50 из нее.

Аналогично, если у меня есть строка ABC : DEP : PQ-Word1 Word2 Word3, я хочу проанализировать PQ из нее.

Я использовал два подхода для решения этой проблемы:

Подход 1

Я написал для него регулярное выражение :([^:]*)-. Это разбирает два приведенных выше примера следующим образом:

ABC : DEP : 050-G&H Sample - IJ - : 050-G&H Sample -

ABC : DEP : PQ-Word1 Word2 Word3 - : PQ-

Подход 2

Я написал :( )?([a-z]|[A-Z]|[0-9])*-, но пробел в скобках игнорируется в Google Spanner и выдает ошибку.

Я хочу добиться этого, используя первый подход. Пожалуйста, предоставьте некоторые предложения для этого.

1 Ответ

0 голосов
/ 09 января 2019

Вы можете использовать

: *0*([^-:]+)-

См. Демоверсию regex

Детали

  • : - двоеточие
  • * - 0 или более пробелов
  • 0* - ноль или более 0 символов
  • ([^-:]+) - Группа захвата 1: один или несколько символов, отличных от - и : (для сопоставления только буквенно-цифровых символов заменить на ([a-zA-Z0-9]+))
  • - - дефис
...