【问题标题】:Extract all twitter usernames using Powershell使用 Powershell 提取所有 Twitter 用户名
【发布时间】:2013-10-18 16:00:56
【问题描述】:

我想解析一个字符串并返回一个包含该推文中提到的人的数组(列表)。 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

【问题讨论】:

    标签: regex parsing powershell twitter


    【解决方案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
    

    【讨论】:

      【解决方案2】:

      使用拆分方法:

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

      使用正则表达式:

      [regex]::matches($text,'@[^\s|<]+') | foreach {$_.value} | sort -unique
      

      【讨论】:

        【解决方案3】:

        如果此类 @username 仅包含字母 [a-zA-Z] 并且此类 @username 之前/之后为空或空格、逗号或点 [\s,.] 和/或标记字符(大于号&gt;,小于号&lt;)那么你应该使用正则表达式:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-11-09
          • 1970-01-01
          • 2015-05-15
          • 1970-01-01
          • 2016-11-28
          • 2020-06-17
          • 1970-01-01
          相关资源
          最近更新 更多