PHP Regex在一段时间之后和空间之前拉文本

时间:2012-06-27 15:17:54

标签: php regex

我试图从不同的变化字符串中拉出某个部分,并且很难获得正确的正则表达式。以下是我想要提取的一些例子:

  1. AG055.MA - MAGNUM(想要仅返回MA)
  2. WI460.16 - SOMETHING(想要返回16)
  3. AG055.QB(想要返回QB)
  4. 所以基本上,我只想在句号之后拉出字符,但是在空格之前。之前或之后没有别的。有人能帮我拿到正确的正则表达式吗?

3 个答案:

答案 0 :(得分:2)

preg_match('/\w+\.(\w{2})\s/', $input, $matches);
echo $matches[1];
  • \w+表示1个或多个单词字符(a-z,A-Z和0-9)。
  • \.表示句点/点(反斜杠是为了逃避它,因为\.用作正则表达式中的运算符)
  • (\w{2})匹配2个字符
  • \s表示空白

答案 1 :(得分:2)

这应该有效:

<?php
preg_match( '/\.([^ ]+)/', $text, $matches );

print_r( $matches );
?>

输出:

Array
(
    [0] => .MA
    [1] => MA
)

Array
(
    [0] => .16
    [1] => 16
)

Array
(
    [0] => .QB
    [1] => QB
)

正则表达式是说找到一个。字符,然后获取不是空格字符的任何字符。 +使它只返回点后面有非空格字符的匹配。

答案 2 :(得分:0)

preg_match('/^[A-Z0-9]{5}\.([A-Z0-9]{2})/', $string, $matches);
var_dump($matches);

应该返回$matches[1]中的字符。