我有以下字符串
Football-Europ,
Football-North
Ice_hockey-NHL
Tennis-xxx
所以我正在使用preg_match来进行这项运动的类型并采取进一步措施......
$sports = "(football|ice_hockey|basketball|tennis|handball|soccer)"
preg_match($rSports,strtolower($link[1]), $sportType);
但我不需要包含Live
和American
字词的字符串,如何修改preg_match
?
Football-Amreican,
Football-Live,
Tennis-Live,
答案 0 :(得分:1)
使用
"(football|ice_hockey|basketball|tennis|handball|soccer)(?!-(?:Live|American))"
它使用负前瞻来确保字符串后面没有这些字。
此外,它不会在结果中包含短划线(-
)。
答案 1 :(得分:0)
在正则表达式中难以匹配特定单词。您需要做的是之后过滤结果。
答案 2 :(得分:0)
我认为您可能正在寻找preg_match_all和“无案例”开关(i):
<?php
$rSports =<<<EOF
Football-Europ,
Football-North,
Ice_hockey-NHL,
Tennis-xxx
EOF;
$rSports = trim ($rSports);
# uncomment to use $sports = "#((football|ice_hockey|basketball|tennis|handball|soccer).*)#i"; // gets you "Football-Europ" etc
$sports = "#(football|ice_hockey|basketball|tennis|handball|soccer)#i"; // gets you "Football"
preg_match_all($sports, $rSports, $sportType);
print_r( $sportType);
答案 3 :(得分:-1)
(^[A-Za-z_]{0,})-
这是你的模式