如何使用RegEx在给定模式后的行尾找到字符串
问题描述:
目标是:从文本中删除不是名称或ID的所有内容。如何使用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编辑我的正则表达式搜索。
答
好吧,我发现了一些研究和试验和错误后的解决方案。
首先,我找到的代码如何识别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
模式*不包含 “@PaulaAbdul” |选择“@PaulaAbdul”后的所有内容*将与'@ MichaelJackson'和'@ GeorgeMichael'匹配# – RomanPerekhrest
你只想匹配'@'? –
guest271314
你需要指定你真正期望的结果。而且你需要告诉我们什么(在你的定义中)是一个名字或ID – Wolfgang