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