【发布时间】:2010-07-14 14:13:05
【问题描述】:
我正在抓取一个文本块,在这个块中会有一行包含一个以“WITH PASSWORD kEqHqPUd”结尾的短语,其中 kEqHqPUd 是动态生成的密码。什么是一个简单的正则表达式来获取其中的密码?
我正在使用 PHP。
【问题讨论】:
-
你有没有尝试过自己的想法?
我正在抓取一个文本块,在这个块中会有一行包含一个以“WITH PASSWORD kEqHqPUd”结尾的短语,其中 kEqHqPUd 是动态生成的密码。什么是一个简单的正则表达式来获取其中的密码?
我正在使用 PHP。
【问题讨论】:
preg_match('/WITH PASSWORD (.*)$/im', $block, $matches);
//result in $matches[1]
密钥是"m" modifier。
【讨论】:
我不确定你如何定义“结束的短语”...但是如果你的意思是“一个句子以密码结尾,但后面可以跟另一个句子”,那么解决方案可能是:
$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]);
}
请注意,$ 符号表示“字符串结尾”。
【讨论】:
假设 PHP 接受标准正则表达式模式,“WITH PASSWORD (.+)+$”应该可以工作,其中密码将放置在第一个捕获组中。
【讨论】: