Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.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,有一点困难的时候,制定出一个正则表达式,将做我需要的。基本上,我正在解析一个包含数千行文本的文件,并查找任何包含该行的内容: 考试: 匹配的文本将始终采用以下格式: 考试:(teststring)额外文本 所以我要做的是匹配考试:,然后把括号内的所有内容都拉进去 我现在的表达: /^.+?\EXAM:(.+)$/is 检查后提取所有内容:,这对此应用程序不起作用。这应该可以: (?<=EXAM: \()([^)]+) (?这应该可以做到: (?<=EXAM: \()([^)]+

有一点困难的时候,制定出一个正则表达式,将做我需要的。基本上,我正在解析一个包含数千行文本的文件,并查找任何包含该行的内容:

考试:

匹配的文本将始终采用以下格式:

考试:(teststring)额外文本

所以我要做的是匹配考试:,然后把括号内的所有内容都拉进去

我现在的表达:

/^.+?\EXAM:(.+)$/is 
检查后提取所有内容:,这对此应用程序不起作用。

这应该可以:

(?<=EXAM: \()([^)]+)
(?这应该可以做到:

(?<=EXAM: \()([^)]+)

(?您可以使用
/EXAM:\s*\([^)]+)\/i

if(preg_match("/EXAM:\s*\(([^)]+)\)/i", $thisline, $matches)) {
    $exam_type = trim($matches[1]);
}
[^)]
将匹配除右括号以外的任何内容,并在遇到第一个
时停止。您需要对括号进行转义,因为它们是特殊的正则表达式字符(用于捕获变量)。例如,在这里,您可以使用未设置场景的场景来存储所需内容。
\s
是任何类型空白(空格、制表符…)的快捷方式。

由于逐行解析文档,
s
标志只会使
与换行符最匹配。

您可以使用
/EXAM:\s*\([^)]+\/i

if(preg_match("/EXAM:\s*\(([^)]+)\)/i", $thisline, $matches)) {
    $exam_type = trim($matches[1]);
}
[^)]
将匹配除右括号以外的任何内容,并在遇到第一个
时停止。您需要对括号进行转义,因为它们是特殊的正则表达式字符(用于捕获变量)。例如,在这里,您可以使用未设置场景的场景来存储所需内容。
\s
是任何类型空白(空格、制表符…)的快捷方式。

您可能不需要在结尾处使用
s
,因为您是逐行解析文档的:
s
标志只会使
与换行符最匹配。

您一次只处理一行吗?请出示您的代码,一次一行。如果(preg_match(“/^.+?\EXAM:(.+)$/is“,$thisline,$matches)){$EXAM_type=trim($matches[1]);}可以在
teststring
extra test
中有括号符号吗?罗宾,不,永远不会……它将始终是:EXAM:(text1)text2您一次处理一行吗?请出示您的代码,一次一行。如果(preg_match(“/^.+?\EXAM:(.+)$/is“,$thisline,$matches)){$EXAM_type=trim($matches[1]);}在
teststring
extra test
中是否会有括号符号?罗宾,不,永远不会…它将始终是:EXAM:(text1)text2