2015-07-08 1 views
3

Я использую компонент скрипта SSIS для извлечения некоторой информации из строки.Соответствующие идентификаторы, предшествующие «случаю» с помощью сценария SSIS с использованием C# regex

Я хотел бы для идентификатора в виде строки в поле ниже схему: случая: 123455

Он встроен в строке, как показано ниже:

This is a string. We want case:12345 and case:5656759 in the title 2. 

Я хотел бы извлечь идентификатор 12345 & 565675 из строки. Вхождение «case» является динамическим, может быть ничем, может отображаться 1 или более 1 в строке. Мне нужна помощь в синтаксисе regex для извлечения информации.

следующие случаи должны быть захвачены:

case:12345, case :12345, case: 12345, case : 12345, Case:12345, CASE:12345 
+0

вы сказали 'case' может или представить, могут не то, как мы находим число? –

+0

Если нет, то возвратите null. – user3082385

ответ

2

Вы можете использовать взгляд фоновым и \d+:

(?i)(?<=\bcase:)\d+ 

См demo

Это регулярное выражение будет соответствовать 1 или больше цифр, которые появляются после строки в лите. case: где case - цельное слово.

В случае, если вам нужна версия с захватом группы, здесь:

(?i)\bcase:(\d+) 

Значение, которое вы должны быть сохранены в захвате группы 1.

UPDATE

Чтобы разрешить дополнительные места в вашем шаблоне, используйте либо

(?i)(?<=\bcase\s*:\s*)\d+ 

Или версия без просмотра назад:

(?i)\bcase\s*:\s*(\d+)  

Создание шаблона регистронезависимого

В (?i) рядного опция/флага делает шаблон нечувствительны к регистру, он будет соответствовать CASE и cAsE. Если вы хотите подобрать только Case и CASE и case, вам нужно использовать (?:[cC]ase|CASE).

+0

Мое регулярное выражение не допускает пустых результатов и соответствует 'case' как целому слову. –

+0

Мое решение работает для вас? Есть ли что-нибудь еще, что я должен учитывать? –

+0

Спасибо за ответ. Но еще один вопрос. Я хотел бы совместить, если после случая появляется пустое пространство или: Например. case: 12345 или case: 12345 или case: 12345 или case: 12345, он вернет мне 12345. Возможно ли это? – user3082385

2
string regex = @"\s(?i)case\s{0,1}:\s{0,1}(\d+)"; 

Demo

+0

Это также будет соответствовать 'cornercase: sometext' и будет записывать пустую строку. –

+0

Спасибо @greenfeet. во всяком случае, чтобы избежать пустой строки? – user3082385

+0

@ user3082385 обновлен, чтобы исправить пустой случай с строкой – greenfeet

Смежные вопросы