PHP 用于查找特定子字符串的正则表达式
PHP Regex to find a specific substring
所以基本上,我有一个带有一些其他信息的大字符串,在最后的某个地方,我有以下字符串结构:
62AC979D-5277D720
是数字和大写字母。我想从更大的字符串的许多行中提取这个子字符串,这些字符串都在不同的地方包含它。我试过:
preg_match('/^[\w]+$/', $string);
但我对正则表达式的经验确实不多。有人可以提供必要的正则表达式或至少告诉我哪里错了吗?感谢您的宝贵时间!
preg_match_all('/\b[0-9A-Z]+-[0-9A-Z]+\b/')
这应该可以为您完成。
preg_match('/\b[0-9A-Z]{8}-[0-9A-Z]{8}\b/', $string);
这适用于您提供的字符串,即 8 个数字或字母后跟 -,然后是数字和字母
你试试这个。
preg_match('/^[0-9A-Z]{8}-[0-9A-Z]{8}$/', $string)
这个正则表达式应该为你做,
([A-Z\d]{8}-[A-Z\d]{8})
正在使用
<?php
$string = 'This is 62AC979D-5277D720 the whole string.';
preg_match_all('~([A-Z\d]{8}-[A-Z\d]{8})~', $string, $value);
print_r($value[1]);
我怀疑您当前的正则表达式失败是因为 ^
和 $
。这些标记您正在搜索的字符串的开始和结束(如果使用 m
修饰符,则标记行)。 \w
也是 a-z
、A-Z
、0-9
和 _
。我认为您只关心大写字母并且只想允许一个破折号。如果目标也始终只有 8 个字符,您可以添加 {8}
代替 +
。 ()
用于捕获找到的值。在 $string
中找到的第一个值将是 $value[1][0]
。
演示:http://sandbox.onlinephpfunctions.com/code/c6b2c391d95c5454a3c7ea81d5ac4a3bb8e49aef
所以基本上,我有一个带有一些其他信息的大字符串,在最后的某个地方,我有以下字符串结构:
62AC979D-5277D720
是数字和大写字母。我想从更大的字符串的许多行中提取这个子字符串,这些字符串都在不同的地方包含它。我试过:
preg_match('/^[\w]+$/', $string);
但我对正则表达式的经验确实不多。有人可以提供必要的正则表达式或至少告诉我哪里错了吗?感谢您的宝贵时间!
preg_match_all('/\b[0-9A-Z]+-[0-9A-Z]+\b/')
这应该可以为您完成。
preg_match('/\b[0-9A-Z]{8}-[0-9A-Z]{8}\b/', $string);
这适用于您提供的字符串,即 8 个数字或字母后跟 -,然后是数字和字母
你试试这个。
preg_match('/^[0-9A-Z]{8}-[0-9A-Z]{8}$/', $string)
这个正则表达式应该为你做,
([A-Z\d]{8}-[A-Z\d]{8})
正在使用
<?php
$string = 'This is 62AC979D-5277D720 the whole string.';
preg_match_all('~([A-Z\d]{8}-[A-Z\d]{8})~', $string, $value);
print_r($value[1]);
我怀疑您当前的正则表达式失败是因为 ^
和 $
。这些标记您正在搜索的字符串的开始和结束(如果使用 m
修饰符,则标记行)。 \w
也是 a-z
、A-Z
、0-9
和 _
。我认为您只关心大写字母并且只想允许一个破折号。如果目标也始终只有 8 个字符,您可以添加 {8}
代替 +
。 ()
用于捕获找到的值。在 $string
中找到的第一个值将是 $value[1][0]
。
演示:http://sandbox.onlinephpfunctions.com/code/c6b2c391d95c5454a3c7ea81d5ac4a3bb8e49aef