我已经在这一段时间待了一段时间并且无法解决这个问题。
我正在尝试根据独特的模式匹配重复模式的立即左侧出现。
说我有以下字符串
DataColumn Caption =“ColA”DataField =“Col1Data”DataColumn Caption =“ColB”DataField =“Col2Data”DataColumn Caption =“ColC”DataField =“Col3Data”DataColumn Caption =“ColD”DataField =“Col4Data”DataColumn Caption = “ColE”DataField =“Col5Data”DataColumn Caption =“ColF”DataField =“Col6Data”DataColumn Caption =“ColG”DataField =“Col7Data”DataColumn Caption =“ColH”DataField =“Col8Data”DataColumn Caption =“ColI”DataField =“ Col9Data“
我想在<{1}}之前匹配(进行查找/替换)Caption
的值,以便我可以更改它的值Col“to other else。
我最接近的是将贪婪的非捕获组放在模式前面,如DataField="Col8Data"
然而,这给了我一个匹配的第一个(?:.*)Caption="(.*)"\sDataField="Col8Data"
与我在搜索组中找到的col之间的整个字符串(不是我追求的)
非常感谢帮助
修改
我忘了提及Caption="Col"
的价值总是不同,因此我试图将其与Caption
匹配。
我已经更新了字符串示例以显示
答案 0 :(得分:1)
您可以尝试使用外观进行查找/替换。尝试找到以下模式:
public function image_item_name($inc)
{
if(isset($_POST['inc'])) {
$inc = $_POST['inc'];
$i = DB::select("SELECT file_name FROM tbl_image_item_name WHERE inc = '$inc';");
foreach ($i as $a){
echo '<img src="../../{{ $a[0]->file_name }}">';
}
}else {
echo "Access Denied";
}
您可以自行确认这与您想要的(?<=Caption=)"[^"]+"(?=\s*DataField="Col8Data")
和"Col"
字词之间的Caption
值相匹配。然后,用你想要的任何值替换。