2017-01-07 2 views
1

Мне нужно идентифицировать подстроку из любых строк на основе регулярного выражения.Regex для извлечения подстроки из строки между двоеточием «:» и «,»

Для примера возьмем следующие строки:

It sent a notice of delivery of goods: UserName1 (00215478),UserName2 (00258747) 

Sent a notice of delivery of the goods: User is not found, UserName2 (00258747) 

It sent a notice of receipt of the goods: UserName1 (00215478),UserName2 (00258747) 

It sent a notice of receipt of the goods: User is not found, UserName2 (00258747) 


I want to get following result: 

UserName1 (00215478) 

User is not found 

UserName1 (00215478) 

User is not found 

У меня есть формула, но она отображает подстроку после двоеточия

MID([String],FIND([String],':',1)+1,LEN([String])) 
+4

В последней строке вашего вопроса, вы падаете, что, как представляется, фрагмент запроса SQL (возможно, SQL Server). Не могли бы вы обновить свой вопрос с помощью инструмента, который вы используете, вместе с образцами данных и ожидаемым выходом? –

ответ

1

следующее регулярное выражение должно дать вам разыскиваемого строку в захваченном переменной и строку с предшествующим двоеточием и добавления запятой в качестве всей найденной строки:

:([^,]*), 

Пояснение: квадратные скобки, начиная с символ шляпы определяет, какие символы следует исключать see this lesson. Здесь нам нужен любой символ, кроме запятой.

Тогда звезда делает любое количество таких символов (без запятой).

В скобках фиксируется строка, которая соответствует внутренней части всей строки, которая соответствует регулярному выражению.

И строка должна начинаться с двоеточия и заканчиваться запятой.

0

Вы можете использовать :(.+), и получить нужную подстроку в 1-я группа захвата, или вы можете смотреть (и позади):

(?<=:).+(?=,) 

https://regex101.com/r/t06IfY/1

0

Попробуйте с регулярным выражением :\s*([^,]+)

enter image description here

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