简单PHP正则表达式问题
下面哪种正则表达式最有效:简单PHP正则表达式问题,php,regex,Php,Regex,下面哪种正则表达式最有效: 正则表达式必须匹配特定字符串(不区分大小写) 可以后跟[或;,然后是其他内容 以下是“foo”的测试用例: 福-->好 食物不好 福;-->不好,以后需要什么 很好 福[酒吧]->很好 foo[-->糟糕,需要一些东西] fOo[bar]1;2;3-->良好 这是我的测试代码: <?php $tests = array(); $tests[] = 'foo'; $tests[] = 'food'; $tests[] = 'foo;'; $tests[] =
- 福-->好
- 食物不好
- 福;-->不好,以后需要什么
- 很好
- 福[酒吧]->很好
- foo[-->糟糕,需要一些东西]
- fOo[bar]1;2;3-->良好
<?php
$tests = array();
$tests[] = 'foo';
$tests[] = 'food';
$tests[] = 'foo;';
$tests[] = 'FOO;bar';
$tests[] = 'foo[bar]';
$tests[] = 'foo[';
$tests[] = 'foo[]';
$tests[] = 'fOo[bar]1;2;3';
foreach ($tests as $test)
{
echo $test, ' --> ';
$found = preg_match('REGULAR EXPRESSION HERE', $test);
if ($found === false || $found < 1)
echo 'bad';
else
echo 'ok';
echo '<br>', PHP_EOL;
}
?>
您可以尝试以下正则表达式:
/foo(;.+?\[.+?\].*?*)$/i
如果不需要关闭支架:
/foo([;\[].+?)*$/i
如果括号或分号不能是表达式的最后一部分:
/foo([;\[][^;\[]+)*$/i
所有人都以优异的成绩通过了考试
资源:
/foo(;.+?\[.+?\].*?*)$/i
如果不需要关闭支架:
/foo([;\[].+?)*$/i
如果括号或分号不能是表达式的最后一部分:
/foo([;\[][^;\[]+)*$/i
所有人都以优异的成绩通过了考试
资源:
/foo($|[[;].)/i
简单:
/foo($|[[;].)/i
你试过阅读正则表达式的教程/信息吗?这似乎是一个家庭作业,我建议你自己阅读并找到答案,从长远来看,这会对你有所帮助。Idk关于php语法,但python会与foo([|;)(.*)@premiso相匹配。我8年前就辍学了(感谢上帝),我知道这很简单,但我讨厌正则表达式,并尽量避免使用它们。我正在慢慢地学习它们,但仍然:)我仍然需要找到一个关于它们的好网站。我所有的网站都过于复杂…«这是一个关于正则表达式的好网站。我看到你对正则表达式提出了很多问题,请允许我向您推荐:您是否尝试过阅读正则表达式的教程/信息?这似乎是一项家庭作业,我建议您自己阅读并找到答案,从长远来看,这将对您有所帮助。Idk关于php语法,但python将与foo([|)(.*)@premiso相匹配。我8年前就辍学了(感谢上帝),我知道这很简单,但我讨厌正则表达式,并尽量避免使用它们。我正在慢慢地学习它们,但仍然:)我仍然需要找到一个关于它们的好网站。我所有的网站都过于复杂…«这是一个关于正则表达式的好网站。我看到你对正则表达式提出了很多问题,请允许我建议您这样做:@Victive,这很奇怪,您能显示您的代码和您使用的正则表达式吗?@Colin HEBERT在OP中添加了测试代码。只需使用测试的正则表达式更改“REGULAR EXPRESSION HERE”。您的3个正则表达式都与我的预期结果不符。在将其放入字符串之前是否对\进行了转义?您应该具有以下内容:
$returnValue=preg\u match('/foo(;.+?\\\[.+?\\\].*)$/i',foo;');
@Colin HEBERT是的,我知道,但仍然是foo;,foo[在他们还可以的时候被贴上坏标签…嗯,从你的第一篇帖子:“foo;-->bad,需要之后的东西;”和“foo[-->bad,需要之后的东西]”@维斯特,这很奇怪,你能显示你的代码和你使用的正则表达式吗?@Colin HEBERT在OP中添加了测试代码。只需用测试的正则表达式更改“正则表达式”。你的3个正则表达式都与我的预期结果不符。你在将\放入字符串之前是否转义了\呢?你应该有以下内容:$returnValue=preg\u match('/foo(;.+?\\\\\\[.+?\\\\\\].*$/i,,,,,,,,,,;
@Colin HEBERT是的,我知道,但仍然是foo;和foo[在他们还行的时候被贴上坏标签…嗯,从你的第一篇帖子:“foo;-->bad,需要之后的东西;”和“foo[-->bad,需要之后的东西]”