У меня есть текстовые данные в таблице SQL Server 2014, в которых я хочу обнаруживать сложные шаблоны и извлекать определенные части текста, если текст соответствует шаблону. Из-за этого мне нужно захватить группы.Могу ли я использовать группы захвата регулярных выражений в SQL Server 2014?
E.g.
Из текста
"Some title, Some Journal name, vol. 5, p. 20-22"
Я хочу, чтобы захватить номер тома
, vol\. ([0-9]+), p\. [0-9]+
виду, что я упростили этот потребительной случай, чтобы улучшить читаемость. Вышеуказанный случай использования может быть разрешен без групп захвата. Фактический прецедент обрабатывает намного больше исключений, например:
- Журнал/заголовок, содержащий «том».
- Номера томов/страницы, содержащие буквы
- "vol" за которыми следуют ":" или ";" вместо "."
- ...
Фактическое регулярное выражение я использую следующие (все же, это не вопрос о регулярных выражений структуры, просто уточняя, почему мне нужно, захватив группы).
(^|§|[^a-z0-9])vol[^a-z0-9]*([a-z]?[0-9]+[a-z]?)
Насколько я знаю, существует два способа получить функциональность Regex в SQL Server.
- Через CLR: https://www.simple-talk.com/sql/t-sql-programming/clr-assembly-regex-functions-for-sql-server-by-example/. Тем не менее, этот пример (с 2009 года) не поддерживает группы. Существуют ли там обычно используемые решения?
- Устанавливая Master Data Services
После установки и настроек всего пакета Master Data Services чувствовал себя излишним, чтобы получить некоторую Regex функциональности, я надеялся, что не было бы легко, общий выход ...
"Я надеялся, что не было бы легко, общий выход »- да CLR. Поддержка регулярных выражений .NET поддерживает захват групп, поэтому напишите нужный вам код и разверните его. –
@MartinSmith: Это уже хорошо знать. Я новичок в SQL Server (от Oracle) и новичок в .NET. Я даже не знаю, что такое CLR *, кроме того, что он может помочь мне использовать функциональность регулярного выражения .NET. Поэтому мне было интересно, есть ли какие-либо решения, которые мне не нужно кодировать. Как ... подключи и играй. Поскольку я предполагаю, что я не первый человек, которому нужна эта функциональность. – Wouter
@Wouter, чтобы узнать больше о работе с SQLCLR в целом, см. Серию, которую я пишу на SQL Server Central по этой теме: [Stairway to SQLCLR] (http://www.sqlservercentral.com/stairway/105855/) (FYI: бесплатная регистрация необходима для чтения контента на этом сайте, но это того стоит :-). –