匹配Word,然后在PHP与正则表达式的分隔符之间

时间:2014-02-07 19:33:18

标签: php regex

有一段困难的时间来制作出能够满足我需要的正则表达式。基本上,我正在通过一个包含数千行文本的文件进行解析,并使用该行查找任何内容:

EXAM:

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

EXAM :( teststring)额外文本

所以我要做的就是在EXAM上匹配:然后拉入括号内的所有内容。

我目前的表达:

/^.+?\EXAM:(.+)$/is 

在EXAM之后拉入所有内容:这对此应用程序无效。

2 个答案:

答案 0 :(得分:3)

这应该这样做:

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

工作正则表达式示例:

http://regex101.com/r/nD3sQ2

答案 1 :(得分:1)

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

if(preg_match("/EXAM:\s*\(([^)]+)\)/i", $thisline, $matches)) {
    $exam_type = trim($matches[1]);
}

[^)]将匹配除右括号之外的任何内容,并且它将在遇到的第一个)处停止。您需要转义括号,因为它们是特殊的正则表达式字符(它们用于捕获变量)。例如,您可以使用未转义的那些来存储您想要的内容 \s是任何类型的空格(空格,制表符......)的快捷方式 您可能最后不需要s,因为您逐行解析文档:s标记仅使.匹配换行符位于其他所有内容之上。