Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 匹配正则表达式中的字符序列_Php_Regex - Fatal编程技术网

Php 匹配正则表达式中的字符序列

Php 匹配正则表达式中的字符序列,php,regex,Php,Regex,我想匹配字符串中的字母序列。例如,如果我有字母tbe,我想匹配所有以字母T开头并包含字母B和E的字符串至少一次。第二个字母必须出现在第三个字母之前,字母之间可能有无限多个字符 也就是说,字母tbe将与字符串匹配 表,麻烦和可怕的,但不是Teb 我试图用php编写代码,使用 $A = 'T'; $B = 'B'; $C = 'E'; $matches = preg_grep('/^'.$A.'.+'.$B.'.+'.$C.'/', $words); 其中单词是包含单词列表的数组。按照我的算法,

我想匹配字符串中的字母序列。例如,如果我有字母tbe,我想匹配所有以字母T开头并包含字母B和E的字符串至少一次。第二个字母必须出现在第三个字母之前,字母之间可能有无限多个字符

也就是说,字母tbe将与字符串匹配 表,麻烦和可怕的,但不是Teb

我试图用php编写代码,使用

$A = 'T';
$B = 'B';
$C = 'E';

$matches = preg_grep('/^'.$A.'.+'.$B.'.+'.$C.'/', $words);
其中单词是包含单词列表的数组。按照我的算法,我无法找到没有字母在$A$B或$C之间的单词


如何使用正则表达式解决此问题?

您无法找到$A$B或$C之间没有字母的单词的原因是因为您使用的是
+
,它试图在$A$B或$C之间至少匹配一个字符


使用
*
而不是
+

可怕的
应该不匹配。e出现在B之前,我想在这种情况下匹配。重要的是e至少在b之后出现一次。它是否出现在前面并不重要。您还应该使正则表达式不区分大小写,以匹配Table之类的词(
/^t[^E]*B.*E$/i