我在预赛中学习了一些基础知识,但当你刚开始接触时,这很难。
我想做的是在字符串中搜索这个实例
错误1234
它不应该区分大小写,因此bug1234或bug1234应该可以工作它必须是单词bug后跟任意4个数字错误1234之间不应该有空格或任何东西,因此错误-1234不应该匹配它应该忽略bug1234z和abug1234这样的东西,所以它必须是bug1234,没有任何前缀或直接在它后面,除非两者之间有空格,所以"bug1234有一个我无法解决的问题"将是匹配的。
只是为了澄清一下,它可以是任何数字,而不是1234,但它们必须是4位
这是我拙劣的尝试:
$file_string = $workdetails->text;
$file_string = strtolower($file_string);
$bugkey = "/bug[0-9]{4}/";
$nosey = preg_match($bugkey, $file_string);
if($nosey !== false)
{
echo "We have a match baby!!"
}
这似乎只是返回了所有排序的空字符串,s字符串,没有提到单词bug
尝试将正则表达式更改为:
/'bbug[0-9]{4}'b/i
'b
修饰符将只在单词边界上匹配,以确保它不匹配abug1234
、bug12345
或bug1234was bad
之类的内容。我还添加了i
修饰符,因此它不区分大小写。您不再需要使用strtolower
。
此外,preg_match
通常返回一个整数,如果不匹配,则返回(int)0
。它只在失败时返回FALSE
。因此,您应该将匹配检查更改为:
if ($nosey > 0) {
// or just
if ($nosey) {
试用:
preg_match('/'b(bug'd{4})/i', $file_string, $match);
print_r($match);
修饰语i
表示不区分大小写,而'b
仅表示整个单词(单词边界)。
试试这个:/(?ism)bug(?i-sm)[0-9]{4}/
在正则表达式测试工具上测试带数据:
sdfsfsbUG1234cccs
干杯!