行尾短语的正则表达式

3

我正在提取一段文本,在这个文本块中,会有一行包含以"WITH PASSWORD kEqHqPUd"结尾的短语,其中kEqHqPUd是一个动态生成的密码。怎样用简单的正则表达式只提取出这个密码?

我在使用PHP。


4
你有没有试着自己想出来? - Alison R.
3个回答

12
preg_match('/WITH PASSWORD (.*)$/im', $block, $matches);
//result in $matches[1]

关键在于"m" 修饰符


3

我不确定您如何定义“以短语结束的句子”......但如果您是指“句子以密码结尾,但可以后跟另一句话”,那么解决方法可能是:

$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]);
}

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

我承认我没有意识到歧义,但我认为大写字母暗示它实际上不是流畅的英语文本,也没有正确的句子结构。 - Artefacto

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接