字符串有:
TEST_DB_DATABASE
TEST_DB_DATABASE_USER
TEST_DB_DATABASE_PSD
TEST_DB_DATABASE_HOST
求正则将TEST_DB_DATABASE 提取出来,目前我写的是:'/TEST_DB_\w*(?=_)/';
匹配了除TEST_DB_DATABASE以外的所有,如何只匹配TEST_DB_DATABASE呢?
TEST_DB_DATABASE
TEST_DB_DATABASE_USER
TEST_DB_DATABASE_PSD
TEST_DB_DATABASE_HOST
求正则将TEST_DB_DATABASE 提取出来,目前我写的是:'/TEST_DB_\w*(?=_)/';
匹配了除TEST_DB_DATABASE以外的所有,如何只匹配TEST_DB_DATABASE呢?
echo $arr[0]
误解我的意思了,字符串里还有其它例如: TEST_DB_INFO
TEST_DB_INFO_USER
TEST_DB_INFO_PSD
TEST_DB_INFO_HOST
要把TEST_DB_DATABASE 和 TEST_DB_INFO 都提取出来
/TEST_DB_[A-Z]*/
preg_match_all('/TEST_DB_[^_]+\b/mU',$str,$arr);
print_r( $arr[0]);Array
(
[0] => TEST_DB_DATABASE
[1] => TEST_DB_INFO
)
应该说:TEST_DB_后面跟不含有 _ 的字母。。
如楼上的据说,\w是包含 _ 的。[a-zA-Z]+就行了。
TEST_DB_DATABASE
TEST_DB_DATABASE_USER
TEST_DB_DATABASE_PSD
TEST_DB_DATABASE_HOST
TEST_DB_INFO
TEST_DB_INFO_USER
TEST_DB_INFO_PSD
TEST_DB_INFO_HOST...string;
$pattern = '/TEST_DB_[A-Z]++(?!_)/';
preg_match_all($pattern, $str, $matches);
print_r($matches[0]);