1

我试图从不同的不同字符串中提取某个部分,并且很难获得正确的正则表达式来做到这一点。以下是我试图从中提取的一些示例:

  1. AG055.MA - MAGNUM(只想返回 MA)
  2. WI460.16 - 东西(想退货 16)
  3. AG055.QB(想退货QB)

所以基本上,我只想在句号之后,但在空格之前拉字符。之前或之后没有别的。有人可以帮我获得正确的正则表达式吗?

4

3 回答 3

3

这应该有效:

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

print_r( $matches );
?>

输出:

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

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

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

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

于 2012-06-27T15:20:15.867 回答
2
preg_match('/\w+\.(\w{2})\s/', $input, $matches);
echo $matches[1];
  • \w+表示 1 个或多个单词字符(az、AZ 和 0-9)。
  • \.表示句点/点(反斜杠是为了转义它,因为\.在正则表达式中用作运算符)
  • (\w{2})匹配 2 个单词字符
  • \s表示空格
于 2012-06-27T15:19:31.997 回答
0
preg_match('/^[A-Z0-9]{5}\.([A-Z0-9]{2})/', $string, $matches);
var_dump($matches);

应该返回$matches[1].

于 2012-06-27T15:20:45.490 回答