Regular Expressions 101

Save & Share

  • Regex Version: ver. 16
  • Update Regex
    ctrl+⇧+s
  • Save new Regex
    ctrl+s
  • Add to Community Library

Flavor

  • PCRE2 (PHP >=7.3)
  • PCRE (PHP <7.3)
  • ECMAScript (JavaScript)
  • Python
  • Golang
  • Java 8
  • .NET 7.0 (C#)
  • Rust
  • Regex Flavor Guide

Function

  • Match
  • Substitution
  • List
  • Unit Tests

Tools

Sponsors
There are currently no sponsors. Become a sponsor today!
An explanation of your regex will be automatically generated as you type.
Detailed match information will be displayed here automatically.
  • All Tokens
  • Common Tokens
  • General Tokens
  • Anchors
  • Meta Sequences
  • Quantifiers
  • Group Constructs
  • Character Classes
  • Flags/Modifiers
  • Substitution
  • A single character of: a, b or c
    [abc]
  • A character except: a, b or c
    [^abc]
  • A character in the range: a-z
    [a-z]
  • A character not in the range: a-z
    [^a-z]
  • A character in the range: a-z or A-Z
    [a-zA-Z]
  • Any single character
    .
  • Alternate - match either a or b
    a|b
  • Any whitespace character
    \s
  • Any non-whitespace character
    \S
  • Any digit
    \d
  • Any non-digit
    \D
  • Any word character
    \w
  • Any non-word character
    \W
  • Non-capturing group
    (?:...)
  • Capturing group
    (...)
  • Zero or one of a
    a?
  • Zero or more of a
    a*
  • One or more of a
    a+
  • Exactly 3 of a
    a{3}
  • 3 or more of a
    a{3,}
  • Between 3 and 6 of a
    a{3,6}
  • Start of string
    ^
  • End of string
    $
  • A word boundary
    \b
  • Non-word boundary
    \B

Regular Expression
No Match

/
/
m

Test String

Substitution

Processing...

Code Generator

Generated Code

# 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