2016-12-27 4 views
-1

Цель состоит в том, чтобы удалить все, что не является ИМЯ или ИДОМ из текста.Как использовать RegEx для поиска строки в конце строки после заданного шаблона

Пример:

Paula Abdul @PaulaAbdul Dec 25 18:13:07 +0000 (GMT) via XYZ Web Client 
(... Some junk line to remove ...) 
Michael Jackson @MichaelJackson Dec 27 16:03:01 +0000 (GMT) via XYZ Web Client 
(... Other stuff to remove/e.g. an empty line) 
George Michael @GeorgeMichael Dec 28 19:23:15 +0000 (GMT) via XYZ Web Client 

Цель является извлечение Имя и ID:

Paula Abdul @PaulaAbdul 
Michael Jackson @MichaelJackson 
George Michael @GeorgeMichael 

Каков наилучший способ по этому поводу? Моя идея: 1. Выберите все строки, которые не содержат «@ ...» 2. И выбрать все после «@ ...» до конца строки

До сих пор я знаю:

Ignore all Lines with <string>: ^(([email protected]<string>).)*$ 

и как я могу объединить оба поиска в одном?

i assume: <pattern1>|<pattern2> 

Я использую https://atom.io редактор для моего поиска RegExp.

+0

рисунок * не содержат "@PaulaAbdul" | выберите все после того, как «@PaulaAbdul» * будет соответствовать строкам с '@ MichaelJackson' и' @ GeorgeMichael' – RomanPerekhrest

+0

Вы пытаетесь сопоставить только '@'? – guest271314

+0

вам нужно указать, ЧТО вы действительно ожидаете найти/получить в самом конце. И вам нужно сказать нам, что (в вашем определении) есть Имя или ID – Wolfgang

ответ

0

Хорошо, я нашел решение после некоторых исследований и испытаний и ошибок.

Сначала я нашел код, как определить идентификаторы Twitter: regex for Twitter username

@[\w{1,15}]+ 

Это находит любой идентификатор, который начинается с «@» и имеет между 1-15 символов. «\ w» означает «символ слова», обычно [A-Za-z0-9_]. Обратите внимание на включение подчеркивания и цифр.

Методом проб и ошибок я нашел остальную часть рисунка:

^[\w. ]*(@[\w{1,15}]+)\b 

Это находит любое количество слов, в том числе «» и «». до тех пор, пока существует «@» + хотя бы один символ слова.

Пример ИСТОЧНИК:

@PaulaAbdul Dec 25 18:13:07 +0000 (GMT) via XYZ Web Client 
(... Some junk line to remove ...) 
Clint. @PaulaAbdul Dec 25 18:13:07 +0000 (GMT) via XYZ Web Client 
abcdef.abcd 999 (... Some junk line to remove ...) 
Paula Abdul @PaulaAbdul Dec 25 18:13:07 +0000 (GMT) via XYZ Web Client 
Some Words (... Some junk line to remove ...) 
Michael M. Jackson @MichaelJackson Dec 27 16:03:01 +0000 (GMT) via XYZ Web Client 
(... Other stuff to remove/e.g. an empty line) 
George Michael @GeorgeMichael Dec 28 19:23:15 +0000 (GMT) via XYZ Web Client 

РЕЗУЛЬТАТ:

@PaulaAbdul 
Paula Abdul @PaulaAbdul 
Michael M. Jackson @MichaelJackson 
George Michael @GeorgeMichael