【问题标题】:Regular expression for end of line phrase行尾短语的正则表达式
【发布时间】:2010-07-14 14:13:05
【问题描述】:

我正在抓取一个文本块,在这个块中会有一行包含一个以“WITH PASSWORD kEqHqPUd”结尾的短语,其中 kEqHqPUd 是动态生成的密码。什么是一个简单的正则表达式来获取其中的密码?

我正在使用 PHP。

【问题讨论】:

  • 你有没有尝试过自己的想法?

标签: php regex


【解决方案1】:
preg_match('/WITH PASSWORD (.*)$/im', $block, $matches);
//result in $matches[1]

密钥是"m" modifier

【讨论】:

    【解决方案2】:

    我不确定你如何定义“结束的短语”...但是如果你的意思是“一个句子以密码结尾,但后面可以跟另一个句子”,那么解决方案可能是:

    $text = <<<TEXT
    This is some
    text and there is a sentence that ends
    with WITH PASSWORD kEqHqPUd. Is that
    matched ?
    TEXT;
    
    $matches = array();
    if (preg_match('/WITH PASSWORD ([\w\d]+)/', $text, $matches)) {
        var_dump($matches[1]);
    }
    

    这仅适用于密码仅包含字母和/或数字的情况 - 但如果“短语结尾”之后有某些内容,它将起作用。


    如果您的意思是密码是整个字符串中的最后一件事,您可以使用如下内容:

    $text = <<<TEXT
    This is some
    text and there is a sentence that ends
    with WITH PASSWORD kEqHqPUd
    TEXT;
    
    $matches = array();
    if (preg_match('/WITH PASSWORD (.+)$/m', $text, $matches)) {
        var_dump($matches[1]);
    }
    

    请注意,$ 符号表示“字符串结尾”。

    【讨论】:

    • 我承认我没有想到歧义,但我认为大写字母暗示它实际上并不是带有正确句子的流畅英文文本。
    【解决方案3】:

    假设 PHP 接受标准正则表达式模式,“WITH PASSWORD (.+)+$”应该可以工作,其中密码将放置在第一个捕获组中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-17
      • 1970-01-01
      • 1970-01-01
      • 2013-11-09
      相关资源
      最近更新 更多