$re = '/<thing Class="Building(?:_[^"]*)?">(?:\R.*){2}\R.*\(.*,\h*\K104(?=\))/m';
$str = '58 <thing Class="Plant">
59 <def>Plant_TreeOak</def>
60 <id>Plant_TreeOak41339</id>
61 <pos>(100, 0, 105)</pos>
62 </thing>
63 <thing Class="Building">
64 <def>Wall</def>
65 <id>Wall28005</id>
66 <pos>(101, 0, 105)</pos>
68 </thing>
69 <thing Class="Building">
70 <def>Wall</def>
71 <id>Wall29667</id>
72 <pos>(103, 0, 105)</pos>
74 </thing>
75 <thing Class="Building">
76 <def>Wall</def>
77 <id>Wall28005</id>
78 <pos>(101, 0, 104)</pos>
80 </thing>
81 <thing Class="Building_Door">
82 <def>Door</def>
83 <id>Door642106</id>
84 <pos>(102, 0, 104)</pos>
86 </thing>
87 <thing Class="Building">
88 <def>Wall</def>
89 <id>Wall29667</id>
90 <pos>(103, 0, 104)</pos>
92 </thing>
93 <thing Class="Plant">
94 <def>Plant_Grass</def>
95 <id>Plant_Grass203219</id>
96 <pos>(104, 0, 104)</pos>
97 </thing>';
$subst = "103";
$result = preg_replace($re, $subst, $str);
echo "The result of the substitution is ".$result;
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