正则表达式模式选择特定数字后的所有字符和数字,直到空格

时间:2015-07-03 10:29:27

标签: php regex preg-match

我创建了一个正则表达式模式,用于选择特定单词后的单词

$string = "Date: Tue, 23 Jun 2015 19:27:30 +0100 Subject: pastik4567"
$pattern = '/(?<=\bSubject:\s)([a-zA-Z-]+)/';
preg_match($pattern,$file,$subjectname);
print_r($subjectname);

结果只是 pastik 而不是 pastik4567 所以我试过这个

$string = "Date: Tue, 23 Jun 2015 19:27:30 +0100 Subject: pastik4567"
$pattern = '/(?<=\bSubject:\s)([a-zA-Z-]+[0-9]+)/';
preg_match($pattern,$file,$subjectname);
print_r($subjectname);

现在它选择 pastik4567 ,但如果主题是 pastik ,则它不会选择任何内容,因为该模式也希望匹配数字。

所以我想问一下如何使这种模式“灵活”,以便它返回 pastik pastik4567

1 个答案:

答案 0 :(得分:1)

只需将范围放入1个字符类:

$pattern = '/(?<=\bSubject:\s)[a-zA-Z0-9-]+/';

请参阅demo

请注意,我将 - 放置在字符类的末尾,以便将其视为文字连字符,而不是范围说明符。