# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"(?:fieldControlData\[?\'?\!?\.?)(\w*)(?:\'\])\!?\??\.?"
test_str = ("<dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'Version'\"\n"
" [caption]=\"fieldControlData['Version']?.CaptionDescription\"\n"
" [visible]=\"fieldControlData['Version']?.visible\"\n"
" [showWhenGrouped]=\"true\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\">\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'DeptName'\"\n"
" [caption]=\"fieldControlData['DeptName']?.CaptionDescription\"\n"
" [visible]=\"fieldControlData['DeptName'].visible\"\n"
" [showWhenGrouped]=\"true\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"></dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'DivName'\"\n"
" [caption]=\"fieldControlData['DivName']?.CaptionDescription\"\n"
" [visible]=\"fieldControlData['DivName']?.visible\"\n"
" [showWhenGrouped]=\"true\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" [groupIndex]=\"0\"></dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'OwnerName'\"\n"
" [caption]=\"fieldControlData['OwnerName']?.CaptionDescription\"\n"
" [visible]=\"fieldControlData['OwnerName']?.visible\"\n"
" [showWhenGrouped]=\"true\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"></dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'CentralizedDivName'\"\n"
" [caption]=\"fieldControlData['CentralizedDivName']?.CaptionDescription\"\n"
" [visible]=\"fieldControlData['CentralizedDivName']?.visible && currentPlanVersion.Code === '2'\"\n"
" [minWidth]=\"50\"\n"
" [width]=\"150\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\">\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'JobCentralized'\"\n"
" [caption]=\"fieldControlData['JobCentralized']?.CaptionDescription\"\n"
" [visible]=\"fieldControlData['JobCentralized']?.visible && currentPlanVersion.Code === '2'\"\n"
" [minWidth]=\"50\"\n"
" [width]=\"120\"\n"
" [alignment]=\"'center'\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"></dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'JobCodeName'\"\n"
" [caption]=\"fieldControlData['JobCode']?.CaptionDescription\"\n"
" [visible]=\"fieldControlData['JobCode']?.visible\"\n"
" [showWhenGrouped]=\"true\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" [groupIndex]=\"1\">\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'JobControlPoolName'\"\n"
" [caption]=\"fieldControlData['JobControlPoolName']?.CaptionDescription\"\n"
" [visible]=\"fieldControlData['JobControlPoolName']?.visible\"\n"
" [showWhenGrouped]=\"true\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\">\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'CatName'\"\n"
" [caption]=\"fieldControlData['CatName']?.CaptionDescription\"\n"
" [visible]=\"fieldControlData['CatName']?.visible\"\n"
" [showWhenGrouped]=\"true\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\">\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'BudgetItemName'\"\n"
" [caption]=\"fieldControlData['BudgetItemName']?.CaptionDescription\"\n"
" [visible]=\"fieldControlData['BudgetItemName']?.visible\"\n"
" [showWhenGrouped]=\"true\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\">\n"
" </dxi-column>\n\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'AssetName'\"\n"
" [caption]=\"fieldControlData['AssetName']?.CaptionDescription\"\n"
" [visible]=\"fieldControlData['AssetName']?.visible\"\n"
" [showWhenGrouped]=\"true\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\">\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'StartDate'\"\n"
" [caption]=\"fieldControlData['StartDate']?.CaptionDescription\"\n"
" [visible]=\"fieldControlData['StartDate']?.visible\"\n"
" [showWhenGrouped]=\"true\"\n"
" [dataType]=\"'date'\"\n"
" [format]=\"'yyyy-MM-dd'\"\n"
" [alignment]=\"'center'\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\">\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'EndDate'\"\n"
" [caption]=\"fieldControlData['EndDate']?.CaptionDescription\"\n"
" [visible]=\"fieldControlData['EndDate']?.visible\"\n"
" [showWhenGrouped]=\"true\"\n"
" [dataType]=\"'date'\"\n"
" [format]=\"'yyyy-MM-dd'\"\n"
" [alignment]=\"'center'\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\">\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'TargetMarginPercent'\"\n"
" [caption]=\"fieldControlData['TargetMarginPercent']?.CaptionDescription\"\n"
" [visible]=\"fieldControlData['TargetMarginPercent']?.visible\"\n"
" [showWhenGrouped]=\"true\"\n"
" [dataType]=\"'number'\"\n"
" [format]=\"'#,##0.00 %'\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\">\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'IsCustDecision'\"\n"
" [caption]=\"fieldControlData['IsCustDecision']?.CaptionDescription\"\n"
" [visible]=\"fieldControlData['IsCustDecision']?.visible\"\n"
" [showWhenGrouped]=\"true\"\n"
" [dataType]=\"'boolean'\"\n"
" [trueText]=\"'Yes ใช่'\"\n"
" [falseText]=\"'No ไม่ใช่'\"\n"
" [alignment]=\"'center'\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" [cellTemplate]=\"'yesnoCellTemplate'\">\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'CustCommitmentPercent'\"\n"
" [caption]=\"fieldControlData['CustCommitmentPercent']?.CaptionDescription\"\n"
" [visible]=\"fieldControlData['CustCommitmentPercent']?.visible\"\n"
" [showWhenGrouped]=\"true\"\n"
" [dataType]=\"'number'\"\n"
" [format]=\"'#,##0.00 %'\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\">\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'BudgetDetail'\"\n"
" [caption]=\"fieldControlData['BudgetDetail']?.CaptionDescription\"\n"
" [visible]=\"fieldControlData['BudgetDetail']?.visible\"\n"
" [showWhenGrouped]=\"true\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" [width]=\"200\">\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'CostElementName'\"\n"
" [caption]=\"fieldControlData['CostElementName']?.CaptionDescription\"\n"
" [visible]=\"fieldControlData['CostElementName']?.visible\"\n"
" [showWhenGrouped]=\"true\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\">\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'WorkProgramName'\"\n"
" [caption]=\"fieldControlData['WorkProgramID']?.CaptionDescription\"\n"
" [visible]=\"fieldControlData['WorkProgramID']?.visible\"\n"
" [showWhenGrouped]=\"true\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\">\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'InvestmentTypeCodeName'\"\n"
" [caption]=\"fieldControlData['InvestmentTypeCodeName'].CaptionDescription\"\n"
" [visible]=\"fieldControlData['InvestmentTypeCodeName'].visible\"\n"
" [showWhenGrouped]=\"true\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\">\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'ActualAmount'\"\n"
" [caption]=\"fieldControlData['ActualAmount']?.CaptionDescription\"\n"
" [visible]=\"fieldControlData['ActualAmount']?.visible\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\">\n"
" <dxo-format type=\"fixedPoint\"\n"
" [precision]=\"2\"> </dxo-format>\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'TotalAmount'\"\n"
" [caption]=\"fieldControlData['TotalAmount']?.CaptionDescription\"\n"
" [visible]=\"fieldControlData['TotalAmount']?.visible\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" [fixedPosition]=\"'right'\"\n"
" [fixed]=\"true\">\n"
" <dxo-format type=\"fixedPoint\"\n"
" [precision]=\"2\"> </dxo-format>\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'TotalAmountLastYear'\"\n"
" [caption]=\"fieldControlData?.TotalAmountLastYear?.CaptionDescription\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" [visible]=\"false\">\n"
" <dxo-format type=\"fixedPoint\"\n"
" [precision]=\"2\"> </dxo-format>\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'PlanAmount'\"\n"
" [caption]=\"fieldControlData['PlanAmount']?.CaptionDescription\"\n"
" [visible]=\"fieldControlData['PlanAmount']?.visible\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\">\n"
" <dxo-format type=\"fixedPoint\"\n"
" [precision]=\"2\"> </dxo-format>\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'PlanAmountLastYear'\"\n"
" [caption]=\"fieldControlData?.PlanAmountLastYear?.CaptionDescription\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" [visible]=\"false\">\n"
" <dxo-format type=\"fixedPoint\"\n"
" [precision]=\"2\"> </dxo-format>\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'PlanM1'\"\n"
" [caption]=\"fieldControlData['PlanM1']?.CaptionDescription\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" [visible]=\"false\">\n"
" <dxo-format type=\"fixedPoint\"\n"
" [precision]=\"2\"> </dxo-format>\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'PlanM2'\"\n"
" [caption]=\"fieldControlData['PlanM2'].CaptionDescription\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" [visible]=\"false\">\n"
" <dxo-format type=\"fixedPoint\"\n"
" [precision]=\"2\"> </dxo-format>\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'PlanM3'\"\n"
" [caption]=\"fieldControlData['PlanM3']!.CaptionDescription\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" [visible]=\"false\">\n"
" <dxo-format type=\"fixedPoint\"\n"
" [precision]=\"2\"> </dxo-format>\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'PlanM4'\"\n"
" [caption]=\"fieldControlData['PlanM4']?.CaptionDescription\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" [visible]=\"false\">\n"
" <dxo-format type=\"fixedPoint\"\n"
" [precision]=\"2\"> </dxo-format>\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'PlanM5'\"\n"
" [caption]=\"fieldControlData['PlanM5']?.CaptionDescription\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" [visible]=\"false\">\n"
" <dxo-format type=\"fixedPoint\"\n"
" [precision]=\"2\"> </dxo-format>\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'PlanM6'\"\n"
" [caption]=\"fieldControlData['PlanM6']?.CaptionDescription\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" [visible]=\"false\">\n"
" <dxo-format type=\"fixedPoint\"\n"
" [precision]=\"2\"> </dxo-format>\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'PlanM7'\"\n"
" [caption]=\"fieldControlData['PlanM7']?.CaptionDescription\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" [visible]=\"false\">\n"
" <dxo-format type=\"fixedPoint\"\n"
" [precision]=\"2\"> </dxo-format>\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'PlanM8'\"\n"
" [caption]=\"fieldControlData['PlanM8']?.CaptionDescription\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" [visible]=\"false\">\n"
" <dxo-format type=\"fixedPoint\"\n"
" [precision]=\"2\"> </dxo-format>\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'PlanM9'\"\n"
" [caption]=\"fieldControlData['PlanM9']?.CaptionDescription\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" [visible]=\"false\">\n"
" <dxo-format type=\"fixedPoint\"\n"
" [precision]=\"2\"> </dxo-format>\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'PlanM10'\"\n"
" [caption]=\"fieldControlData['PlanM10']?.CaptionDescription\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" [visible]=\"false\">\n"
" <dxo-format type=\"fixedPoint\"\n"
" [precision]=\"2\"> </dxo-format>\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'PlanM11'\"\n"
" [caption]=\"fieldControlData['PlanM11']?.CaptionDescription\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" [visible]=\"false\">\n"
" <dxo-format type=\"fixedPoint\"\n"
" [precision]=\"2\"> </dxo-format>\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'PlanM12'\"\n"
" [caption]=\"fieldControlData['PlanM12']?.CaptionDescription\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" [visible]=\"false\">\n"
" <dxo-format type=\"fixedPoint\"\n"
" [precision]=\"2\"> </dxo-format>\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'CommitAmount'\"\n"
" [caption]=\"fieldControlData['CommitAmount']?.CaptionDescription\"\n"
" [visible]=\"fieldControlData['CommitAmount']?.visible\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\">\n"
" <dxo-format type=\"fixedPoint\"\n"
" [precision]=\"2\"> </dxo-format>\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'ComM1'\"\n"
" [caption]=\"fieldControlData['ComM1']?.CaptionDescription\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" [visible]=\"false\">\n"
" <dxo-format type=\"fixedPoint\"\n"
" [precision]=\"2\"> </dxo-format>\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'ComM2'\"\n"
" [caption]=\"fieldControlData['ComM2']?.CaptionDescription\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" [visible]=\"false\">\n"
" <dxo-format type=\"fixedPoint\"\n"
" [precision]=\"2\"> </dxo-format>\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'ComM3'\"\n"
" [caption]=\"fieldControlData['ComM3']?.CaptionDescription\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" [visible]=\"false\">\n"
" <dxo-format type=\"fixedPoint\"\n"
" [precision]=\"2\"> </dxo-format>\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'ComM4'\"\n"
" [caption]=\"fieldControlData['ComM4']?.CaptionDescription\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" [visible]=\"false\">\n"
" <dxo-format type=\"fixedPoint\"\n"
" [precision]=\"2\"> </dxo-format>\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'ComM5'\"\n"
" [caption]=\"fieldControlData!.ComM5?.CaptionDescription\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" [visible]=\"false\">\n"
" <dxo-format type=\"fixedPoint\"\n"
" [precision]=\"2\"> </dxo-format>\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'ComM6'\"\n"
" [caption]=\"fieldControlData['ComM6']?.CaptionDescription\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" [visible]=\"false\">\n"
" <dxo-format type=\"fixedPoint\"\n"
" [precision]=\"2\"> </dxo-format>\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'ComM7'\"\n"
" [caption]=\"fieldControlData['ComM7']?.CaptionDescription\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" [visible]=\"false\">\n"
" <dxo-format type=\"fixedPoint\"\n"
" [precision]=\"2\"> </dxo-format>\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'ComM8'\"\n"
" [caption]=\"fieldControlData['ComM8']?.CaptionDescription\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" [visible]=\"false\">\n"
" <dxo-format type=\"fixedPoint\"\n"
" [precision]=\"2\"> </dxo-format>\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'ComM9'\"\n"
" [caption]=\"fieldControlData['ComM9']?.CaptionDescription\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" [visible]=\"false\">\n"
" <dxo-format type=\"fixedPoint\"\n"
" [precision]=\"2\"> </dxo-format>\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'ComM10'\"\n"
" [caption]=\"fieldControlData['ComM10']?.CaptionDescription\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" [visible]=\"false\">\n"
" <dxo-format type=\"fixedPoint\"\n"
" [precision]=\"2\"> </dxo-format>\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'ComM11'\"\n"
" [caption]=\"fieldControlData['ComM11']?.CaptionDescription\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" [visible]=\"false\">\n"
" <dxo-format type=\"fixedPoint\"\n"
" [precision]=\"2\"> </dxo-format>\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'ComM12'\"\n"
" [caption]=\"fieldControlData.ComM12']?.CaptionDescription\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" [visible]=\"false\">\n"
" <dxo-format type=\"fixedPoint\"\n"
" [precision]=\"2\"> </dxo-format>\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'Remark'\"\n"
" [caption]=\"fieldControlData?.'Remark']?.CaptionDescription\"\n"
" [visible]=\"fieldControlData['Remark']?.visible\"\n"
" [width]=\"120\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"></dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'Message'\"\n"
" [minWidth]=\"110\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" [caption]=\"fieldControlData['Message']?.CaptionDescription\"\n"
" [visible]=\"fieldControlData['Message']?.visible\"></dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'SubmitSAPDate'\"\n"
" [caption]=\"fieldControlData['SubmitSAPDate']?.CaptionDescription\"\n"
" [visible]=\"fieldControlData['SubmitSAPDate']?.visible\"\n"
" [showWhenGrouped]=\"true\"\n"
" [dataType]=\"'date'\"\n"
" [format]=\"'yyyy-MM-dd'\"\n"
" [alignment]=\"'center'\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\">\n"
" </dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'Comment'\"\n"
" [caption]=\"fieldControlData['CommentReject']?.CaptionDescription\"\n"
" [visible]=\"fieldControlData['CommentReject']?.visible\"\n"
" [width]=\"200\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"></dxi-column>\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'StateInfo'\"\n"
" [caption]=\"fieldControlData['StateInfo']?.CaptionDescription\"\n"
" [visible]=\"fieldControlData['StateInfo']?.visible\"\n"
" [alignment]=\"'center'\"\n"
" [width]=\"100\"\n"
" [cellTemplate]=\"'stateCellTemplate'\"\n"
" [fixedPosition]=\"'right'\"\n"
" [fixed]=\"true\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\">\n"
" <div *dxTemplate=\"let item of 'stateCellTemplate'\">\n"
" <span>{{ item.data.StateInfo | emptyValue }}</span>\n"
" </div>\n"
" </dxi-column>\n"
" <!-- <dxi-column [filterType]=\"'include'\"\n"
" [dataField]=\"'StatusName'\"\n"
" [caption]=\"fieldControlData['StatusName']?.CaptionDescription\"\n"
" [visible]=\"fieldControlData['StatusName']?.visible\"\n"
" [alignment]=\"'center'\"\n"
" [width]=\"110\"\n"
" [cellTemplate]=\"'statusCellTemplate'\"\n"
" [fixed]=\"true\"\n"
" [fixedPosition]=\"'right'\"\n"
" [headerCellTemplate]=\"'defaultHeaderTemplate'\"\n"
" >\n"
" <div *dxTemplate=\"let item of 'statusCellTemplate'\">\n"
" <span class=\"badge-status badge wd-90\" [ngClass]=\"item.data.StatusName | statusClass\">{{\n"
" item.data.StatusName\n"
" }}</span>\n"
" </div>\n"
" </dxi-column> -->\n"
" <!-- [visible]=\"permissionActions[PermissionAction.Edit]\" -->\n"
" <dxi-column [filterType]=\"'include'\"\n"
" [alignment]=\"'center'\"\n"
" [width]=\"100\"\n"
" [cellTemplate]=\"'actionCellTemplate'\"\n"
" [allowGrouping]=\"false\"\n"
" [allowHeaderFiltering]=\"false\"\n"
" [allowFiltering]=\"false\"\n"
" [allowHiding]=\"false\"\n"
" [allowSorting]=\"false\"\n"
" [allowSearch]=\"false\"\n"
" [showInColumnChooser]=\"false\"\n"
" [fixed]=\"true\"\n"
" [fixedPosition]=\"'right'\">\n"
" <div *dxTemplate=\"let item of 'actionCellTemplate'\">\n"
" <div class=\"mx-1\">\n"
" <button *ngIf=\"item.data.CanEdit && permissionActions[PermissionAction.Edit]\"\n"
" class=\"btn btn-action btn-dark p-1 mr-2 no-box-shadow bs-tooltip\"\n"
" title=\"Edit Plan\"\n"
" (click)=\"editPlanClick($event, item.data)\">\n"
" <i class=\"fa-solid fa-edit fa-lg\"></i>\n"
" </button>\n"
" <button *ngIf=\"item.data.CanEdit && permissionActions[PermissionAction.Delete]\"\n"
" class=\"btn btn-danger btn-action p-1 mr-2 no-box-shadow bs-tooltip\"\n"
" title=\"Delete Plan\"\n"
" (click)=\"deletePlanItemClick(item.data)\">\n"
" <i class=\"fa-solid fa-trash-can fa-lg\"></i>\n"
" </button>\n"
" </div>\n"
" </div>\n"
" </dxi-column>")
subst = "fieldControlerData?.$1?."
# You can manually specify the number of replacements by changing the 4th argument
result = re.sub(regex, subst, test_str, 1, re.MULTILINE)
if result:
print (result)
# Note: for Python 2.7 compatibility, use ur"" to prefix the regex and u"" to prefix the test string and substitution.
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 Python, please visit: https://docs.python.org/3/library/re.html