我试图从不同的不同字符串中提取某个部分,并且很难获得正确的正则表达式来做到这一点。以下是我试图从中提取的一些示例:
- AG055.MA - MAGNUM(只想返回 MA)
- WI460.16 - 东西(想退货 16)
- AG055.QB(想退货QB)
所以基本上,我只想在句号之后,但在空格之前拉字符。之前或之后没有别的。有人可以帮我获得正确的正则表达式吗?
这应该有效:
<?php
preg_match( '/\.([^ ]+)/', $text, $matches );
print_r( $matches );
?>
输出:
Array
(
[0] => .MA
[1] => MA
)
Array
(
[0] => .16
[1] => 16
)
Array
(
[0] => .QB
[1] => QB
)
正则表达式是说找到一个 . 字符,然后在它之后获取任何不是空格字符的字符。+ 使它只返回点后有非空格字符的匹配项。
preg_match('/\w+\.(\w{2})\s/', $input, $matches);
echo $matches[1];
\w+
表示 1 个或多个单词字符(az、AZ 和 0-9)。\.
表示句点/点(反斜杠是为了转义它,因为\.
在正则表达式中用作运算符)(\w{2})
匹配 2 个单词字符\s
表示空格preg_match('/^[A-Z0-9]{5}\.([A-Z0-9]{2})/', $string, $matches);
var_dump($matches);
应该返回$matches[1]
.