0

我想解析一个字符串并返回一个包含该推文中提到的人的数组(列表)。Twitter用户名都以@开头。

如何使用 Powershell 提取字符串中的所有 Twitter 用户名?

$text = @"
    text text text 
    @twitter text text text @facebook 
    text text text @linkedin text text text 
        Hello <a href="http://twitter.com/twitter">@twitter</a> and <a href="http://twitter.com/facebook">@facebook</a> @kiquenet
"@

我会得到:

@twitter 
@facebook 
@linkedin 
@kiquenet
4

3 回答 3

1

使用 V3:

$text = @"
    text text text 
    @twitter text text text @facebook 
    text text text @linkedin text text text 
        Hello <a href="http://twitter.com/twitter">@twitter</a> and <a href="http://twitter.com/facebook">@facebook</a> @kiquenet
"@

$regex = [regex]'\s@[^@ ]+\s?'

$regex.matches($text).groups.value

 @twitter 
 @facebook 
 @linkedin 
 @kiquenet
于 2013-10-18T18:11:34.347 回答
0

如果此类@username仅包含字母,并且此类@username[a-zA-Z]之前/之后没有任何内容或空格、逗号或点和/或标记字符(大于号、小于号),那么您应该使用正则表达式模式:[\s,.]><

(?:(?<=[\s,.>])|^)@[a-zA-Z]+(?:(?=[\s,.<])|$)

如果允许使用其他一些字符,则必须调整模式,但这个例子应该足够有帮助......

于 2013-10-18T18:36:51.493 回答
0

使用拆分方法:

$text.split() -like "@*"

使用正则表达式:

[regex]::matches($text,'@[^\s|<]+') | foreach {$_.value} | sort -unique
于 2013-10-19T12:52:16.710 回答