$re = '/^ *(\w+) *: *"((?:[^"]|\\\\")+)" *(?=\n)/ms';
$str = '# ------------ THIS IS A COMMENT -----------
# ------------ THIS IS A COMMENT -----------
# ------------ THIS IS A COMMENT -----------
# ------------ THIS IS A COMMENT -----------
# ------------ THIS IS A COMMENT -----------
<check_type:"Windows" version:"2">
<custom_item>
value_data : "Administrators" || ("Auditors" && "Administrators")
value_data : "change permissions" | "create files / write data" \\
| "create folders / append data" | "delete" \\
| "delete subfolder and files"
value_data : "physicalPath:(\\%SystemDrive\\%|C:)"
value_type : USER_RIGHT
see_also : "Glob all the \\"quotes\\" inside me"
see_also : \'Same thing with simple \\\'quotes\\\' in values\'
# ----------------- THIS IS A COMMENT -----------------
info : "Inappropriate granting of user rights can provide system,
administrative, and other high-level capabilities. Accounts
with the: \'Modify firmware environment values\' user right can
# ----------------- THIS IS <<NOT>> A COMMENT ----------------
change hardware configuration environment variables. This
could result in hardware failures or a denial of service."
</custom_item>
<if>
# ----------------------------------------------------- (\\n)
# ------------ Start of the condition test ------------ (\\n)
# ----------------------------------------------------- (\\n)
<condition type:"AND">
</condition>
# ---------------------- If true ---------------------- (\\n)
<then>
</then>
# ----------------------- False ----------------------- (\\n)
<else>
</else>
</if>
</check_type>';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php