0

我经历了一些关于预赛的基础知识,但当你刚接触它时,这相当困难。

我想做的是在字符串中搜索这个实例

错误1234

它不应该区分大小写,因此 bug1234 或 BuG1234 应该可以工作 它必须是单词 bug 后跟任何 4 个数字 之间不应有空格或任何东西 bug1234 所以 bug-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!!"
}

那似乎只是返回了各种空字符串,而没有提及 bug 一词

4

3 回答 3

1

尝试将正则表达式更改为:

/\bbug[0-9]{4}\b/i

\b修饰符只会在单词边界上匹配,以确保它不匹配abug1234,bug12345bug1234was bad. 我还添加了i修饰符,因此它不区分大小写。您不再需要使用strtolower.

此外,preg_match通常返回一个整数,(int)0如果不匹配则返回。它只FALSE在失败时返回。因此,您应该将匹配检查更改为:

if ($nosey > 0) {
// or just
if ($nosey) {
于 2012-09-12T21:25:40.100 回答
0

试试这个:/(?ism)bug(?i-sm)[0-9]{4}/

正则表达式测试工具上测试了 数据:

sdfsfsbUG1234cccs

干杯!

于 2012-09-12T21:22:29.473 回答
0

试试看:

preg_match('/\b(bug\d{4})/i', $file_string, $match);
print_r($match);

修饰符 i代表不区分大小写,仅代表\b整个单词(单词边界)。

于 2012-09-12T21:24:06.393 回答