我需要一个正则表达式的帮助,它将在下面的字符串中找到匹配项:
myDOG_test
myCAT_test
基本上,我想从这些路径返回'DOG'或'CAT'。
然后我有类似的字符串(全部以'my'开头),在我想要的值之后不包含下划线,在这种情况下,我只想在匹配组中返回FULL字符串。
myCentralReports
myDEMO3
这是我到目前为止的REGEXP:
.*?my(.*?)\_.*
这正确地将CAT&匹配组中的DOG,但我在匹配其他2个字符串时遇到问题。很显然,我在那里留下了硬编码的下划线,只是为了向您展示我的开始 - 但我需要为其他情况修改它。任何帮助表示赞赏!感谢。
答案 0 :(得分:2)
不确定为什么需要正则表达式:
explode('_', $string);
第一个元素将包含myDOG
或myDEMO3
。如果需要,请移除'my'
,在第二种情况下是否需要'my'
并不清楚。
答案 1 :(得分:0)
'/\smy(.+?)[_|\s]/'
这将在空白字符后跟“my”和下一个尾随下划线或空白字符之间得到任何内容。尝试一下。
答案 2 :(得分:0)
你可以这样做:
$list = array(' myDOG_test', 'myCAT_test',' myCentralReports', 'myDEMO3');
foreach($list as $elem) {
preg_match("/^\s*my(.+?)(?:_|$)/", $elem, $m);
echo "$elem : matches = ";print_r($m);
}
<强>输出:强>
myDOG_test : matches = Array
(
[0] => myDOG_
[1] => DOG
)
myCAT_test : matches = Array
(
[0] => myCAT_
[1] => CAT
)
myCentralReports : matches = Array
(
[0] => myCentralReports
[1] => CentralReports
)
myDEMO3 : matches = Array
(
[0] => myDEMO3
[1] => DEMO3
)