有一段困难的时间来制作出能够满足我需要的正则表达式。基本上,我正在通过一个包含数千行文本的文件进行解析,并使用该行查找任何内容:
EXAM:
匹配的文字将始终采用以下格式:
EXAM :( teststring)额外文本
所以我要做的就是在EXAM上匹配:然后拉入括号内的所有内容。
我目前的表达:
/^.+?\EXAM:(.+)$/is
在EXAM之后拉入所有内容:这对此应用程序无效。
答案 0 :(得分:3)
答案 1 :(得分:1)
您可以使用/EXAM:\s*\(([^)]+)\)/i
:
if(preg_match("/EXAM:\s*\(([^)]+)\)/i", $thisline, $matches)) {
$exam_type = trim($matches[1]);
}
[^)]
将匹配除右括号之外的任何内容,并且它将在遇到的第一个)
处停止。您需要转义括号,因为它们是特殊的正则表达式字符(它们用于捕获变量)。例如,您可以使用未转义的那些来存储您想要的内容
\s
是任何类型的空格(空格,制表符......)的快捷方式
您可能最后不需要s
,因为您逐行解析文档:s
标记仅使.
匹配换行符位于其他所有内容之上。