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

using System; using System.Text.RegularExpressions; public class Example { public static void Main() { string pattern = @"(?:fieldControlData\[?\'?\!?\.?)(\w*)(?:\'\])\!?\??\.?"; string substitution = @"fieldControlerData?.$1?."; string input = @"<dxi-column [filterType]=""'include'"" [dataField]=""'Version'"" [caption]=""fieldControlData['Version']?.CaptionDescription"" [visible]=""fieldControlData['Version']?.visible"" [showWhenGrouped]=""true"" [headerCellTemplate]=""'defaultHeaderTemplate'""> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'DeptName'"" [caption]=""fieldControlData['DeptName']?.CaptionDescription"" [visible]=""fieldControlData['DeptName'].visible"" [showWhenGrouped]=""true"" [headerCellTemplate]=""'defaultHeaderTemplate'""></dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'DivName'"" [caption]=""fieldControlData['DivName']?.CaptionDescription"" [visible]=""fieldControlData['DivName']?.visible"" [showWhenGrouped]=""true"" [headerCellTemplate]=""'defaultHeaderTemplate'"" [groupIndex]=""0""></dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'OwnerName'"" [caption]=""fieldControlData['OwnerName']?.CaptionDescription"" [visible]=""fieldControlData['OwnerName']?.visible"" [showWhenGrouped]=""true"" [headerCellTemplate]=""'defaultHeaderTemplate'""></dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'CentralizedDivName'"" [caption]=""fieldControlData['CentralizedDivName']?.CaptionDescription"" [visible]=""fieldControlData['CentralizedDivName']?.visible && currentPlanVersion.Code === '2'"" [minWidth]=""50"" [width]=""150"" [headerCellTemplate]=""'defaultHeaderTemplate'""> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'JobCentralized'"" [caption]=""fieldControlData['JobCentralized']?.CaptionDescription"" [visible]=""fieldControlData['JobCentralized']?.visible && currentPlanVersion.Code === '2'"" [minWidth]=""50"" [width]=""120"" [alignment]=""'center'"" [headerCellTemplate]=""'defaultHeaderTemplate'""></dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'JobCodeName'"" [caption]=""fieldControlData['JobCode']?.CaptionDescription"" [visible]=""fieldControlData['JobCode']?.visible"" [showWhenGrouped]=""true"" [headerCellTemplate]=""'defaultHeaderTemplate'"" [groupIndex]=""1""> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'JobControlPoolName'"" [caption]=""fieldControlData['JobControlPoolName']?.CaptionDescription"" [visible]=""fieldControlData['JobControlPoolName']?.visible"" [showWhenGrouped]=""true"" [headerCellTemplate]=""'defaultHeaderTemplate'""> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'CatName'"" [caption]=""fieldControlData['CatName']?.CaptionDescription"" [visible]=""fieldControlData['CatName']?.visible"" [showWhenGrouped]=""true"" [headerCellTemplate]=""'defaultHeaderTemplate'""> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'BudgetItemName'"" [caption]=""fieldControlData['BudgetItemName']?.CaptionDescription"" [visible]=""fieldControlData['BudgetItemName']?.visible"" [showWhenGrouped]=""true"" [headerCellTemplate]=""'defaultHeaderTemplate'""> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'AssetName'"" [caption]=""fieldControlData['AssetName']?.CaptionDescription"" [visible]=""fieldControlData['AssetName']?.visible"" [showWhenGrouped]=""true"" [headerCellTemplate]=""'defaultHeaderTemplate'""> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'StartDate'"" [caption]=""fieldControlData['StartDate']?.CaptionDescription"" [visible]=""fieldControlData['StartDate']?.visible"" [showWhenGrouped]=""true"" [dataType]=""'date'"" [format]=""'yyyy-MM-dd'"" [alignment]=""'center'"" [headerCellTemplate]=""'defaultHeaderTemplate'""> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'EndDate'"" [caption]=""fieldControlData['EndDate']?.CaptionDescription"" [visible]=""fieldControlData['EndDate']?.visible"" [showWhenGrouped]=""true"" [dataType]=""'date'"" [format]=""'yyyy-MM-dd'"" [alignment]=""'center'"" [headerCellTemplate]=""'defaultHeaderTemplate'""> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'TargetMarginPercent'"" [caption]=""fieldControlData['TargetMarginPercent']?.CaptionDescription"" [visible]=""fieldControlData['TargetMarginPercent']?.visible"" [showWhenGrouped]=""true"" [dataType]=""'number'"" [format]=""'#,##0.00 %'"" [headerCellTemplate]=""'defaultHeaderTemplate'""> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'IsCustDecision'"" [caption]=""fieldControlData['IsCustDecision']?.CaptionDescription"" [visible]=""fieldControlData['IsCustDecision']?.visible"" [showWhenGrouped]=""true"" [dataType]=""'boolean'"" [trueText]=""'Yes ใช่'"" [falseText]=""'No ไม่ใช่'"" [alignment]=""'center'"" [headerCellTemplate]=""'defaultHeaderTemplate'"" [cellTemplate]=""'yesnoCellTemplate'""> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'CustCommitmentPercent'"" [caption]=""fieldControlData['CustCommitmentPercent']?.CaptionDescription"" [visible]=""fieldControlData['CustCommitmentPercent']?.visible"" [showWhenGrouped]=""true"" [dataType]=""'number'"" [format]=""'#,##0.00 %'"" [headerCellTemplate]=""'defaultHeaderTemplate'""> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'BudgetDetail'"" [caption]=""fieldControlData['BudgetDetail']?.CaptionDescription"" [visible]=""fieldControlData['BudgetDetail']?.visible"" [showWhenGrouped]=""true"" [headerCellTemplate]=""'defaultHeaderTemplate'"" [width]=""200""> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'CostElementName'"" [caption]=""fieldControlData['CostElementName']?.CaptionDescription"" [visible]=""fieldControlData['CostElementName']?.visible"" [showWhenGrouped]=""true"" [headerCellTemplate]=""'defaultHeaderTemplate'""> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'WorkProgramName'"" [caption]=""fieldControlData['WorkProgramID']?.CaptionDescription"" [visible]=""fieldControlData['WorkProgramID']?.visible"" [showWhenGrouped]=""true"" [headerCellTemplate]=""'defaultHeaderTemplate'""> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'InvestmentTypeCodeName'"" [caption]=""fieldControlData['InvestmentTypeCodeName'].CaptionDescription"" [visible]=""fieldControlData['InvestmentTypeCodeName'].visible"" [showWhenGrouped]=""true"" [headerCellTemplate]=""'defaultHeaderTemplate'""> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'ActualAmount'"" [caption]=""fieldControlData['ActualAmount']?.CaptionDescription"" [visible]=""fieldControlData['ActualAmount']?.visible"" [headerCellTemplate]=""'defaultHeaderTemplate'""> <dxo-format type=""fixedPoint"" [precision]=""2""> </dxo-format> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'TotalAmount'"" [caption]=""fieldControlData['TotalAmount']?.CaptionDescription"" [visible]=""fieldControlData['TotalAmount']?.visible"" [headerCellTemplate]=""'defaultHeaderTemplate'"" [fixedPosition]=""'right'"" [fixed]=""true""> <dxo-format type=""fixedPoint"" [precision]=""2""> </dxo-format> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'TotalAmountLastYear'"" [caption]=""fieldControlData?.TotalAmountLastYear?.CaptionDescription"" [headerCellTemplate]=""'defaultHeaderTemplate'"" [visible]=""false""> <dxo-format type=""fixedPoint"" [precision]=""2""> </dxo-format> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'PlanAmount'"" [caption]=""fieldControlData['PlanAmount']?.CaptionDescription"" [visible]=""fieldControlData['PlanAmount']?.visible"" [headerCellTemplate]=""'defaultHeaderTemplate'""> <dxo-format type=""fixedPoint"" [precision]=""2""> </dxo-format> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'PlanAmountLastYear'"" [caption]=""fieldControlData?.PlanAmountLastYear?.CaptionDescription"" [headerCellTemplate]=""'defaultHeaderTemplate'"" [visible]=""false""> <dxo-format type=""fixedPoint"" [precision]=""2""> </dxo-format> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'PlanM1'"" [caption]=""fieldControlData['PlanM1']?.CaptionDescription"" [headerCellTemplate]=""'defaultHeaderTemplate'"" [visible]=""false""> <dxo-format type=""fixedPoint"" [precision]=""2""> </dxo-format> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'PlanM2'"" [caption]=""fieldControlData['PlanM2'].CaptionDescription"" [headerCellTemplate]=""'defaultHeaderTemplate'"" [visible]=""false""> <dxo-format type=""fixedPoint"" [precision]=""2""> </dxo-format> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'PlanM3'"" [caption]=""fieldControlData['PlanM3']!.CaptionDescription"" [headerCellTemplate]=""'defaultHeaderTemplate'"" [visible]=""false""> <dxo-format type=""fixedPoint"" [precision]=""2""> </dxo-format> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'PlanM4'"" [caption]=""fieldControlData['PlanM4']?.CaptionDescription"" [headerCellTemplate]=""'defaultHeaderTemplate'"" [visible]=""false""> <dxo-format type=""fixedPoint"" [precision]=""2""> </dxo-format> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'PlanM5'"" [caption]=""fieldControlData['PlanM5']?.CaptionDescription"" [headerCellTemplate]=""'defaultHeaderTemplate'"" [visible]=""false""> <dxo-format type=""fixedPoint"" [precision]=""2""> </dxo-format> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'PlanM6'"" [caption]=""fieldControlData['PlanM6']?.CaptionDescription"" [headerCellTemplate]=""'defaultHeaderTemplate'"" [visible]=""false""> <dxo-format type=""fixedPoint"" [precision]=""2""> </dxo-format> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'PlanM7'"" [caption]=""fieldControlData['PlanM7']?.CaptionDescription"" [headerCellTemplate]=""'defaultHeaderTemplate'"" [visible]=""false""> <dxo-format type=""fixedPoint"" [precision]=""2""> </dxo-format> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'PlanM8'"" [caption]=""fieldControlData['PlanM8']?.CaptionDescription"" [headerCellTemplate]=""'defaultHeaderTemplate'"" [visible]=""false""> <dxo-format type=""fixedPoint"" [precision]=""2""> </dxo-format> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'PlanM9'"" [caption]=""fieldControlData['PlanM9']?.CaptionDescription"" [headerCellTemplate]=""'defaultHeaderTemplate'"" [visible]=""false""> <dxo-format type=""fixedPoint"" [precision]=""2""> </dxo-format> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'PlanM10'"" [caption]=""fieldControlData['PlanM10']?.CaptionDescription"" [headerCellTemplate]=""'defaultHeaderTemplate'"" [visible]=""false""> <dxo-format type=""fixedPoint"" [precision]=""2""> </dxo-format> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'PlanM11'"" [caption]=""fieldControlData['PlanM11']?.CaptionDescription"" [headerCellTemplate]=""'defaultHeaderTemplate'"" [visible]=""false""> <dxo-format type=""fixedPoint"" [precision]=""2""> </dxo-format> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'PlanM12'"" [caption]=""fieldControlData['PlanM12']?.CaptionDescription"" [headerCellTemplate]=""'defaultHeaderTemplate'"" [visible]=""false""> <dxo-format type=""fixedPoint"" [precision]=""2""> </dxo-format> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'CommitAmount'"" [caption]=""fieldControlData['CommitAmount']?.CaptionDescription"" [visible]=""fieldControlData['CommitAmount']?.visible"" [headerCellTemplate]=""'defaultHeaderTemplate'""> <dxo-format type=""fixedPoint"" [precision]=""2""> </dxo-format> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'ComM1'"" [caption]=""fieldControlData['ComM1']?.CaptionDescription"" [headerCellTemplate]=""'defaultHeaderTemplate'"" [visible]=""false""> <dxo-format type=""fixedPoint"" [precision]=""2""> </dxo-format> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'ComM2'"" [caption]=""fieldControlData['ComM2']?.CaptionDescription"" [headerCellTemplate]=""'defaultHeaderTemplate'"" [visible]=""false""> <dxo-format type=""fixedPoint"" [precision]=""2""> </dxo-format> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'ComM3'"" [caption]=""fieldControlData['ComM3']?.CaptionDescription"" [headerCellTemplate]=""'defaultHeaderTemplate'"" [visible]=""false""> <dxo-format type=""fixedPoint"" [precision]=""2""> </dxo-format> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'ComM4'"" [caption]=""fieldControlData['ComM4']?.CaptionDescription"" [headerCellTemplate]=""'defaultHeaderTemplate'"" [visible]=""false""> <dxo-format type=""fixedPoint"" [precision]=""2""> </dxo-format> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'ComM5'"" [caption]=""fieldControlData!.ComM5?.CaptionDescription"" [headerCellTemplate]=""'defaultHeaderTemplate'"" [visible]=""false""> <dxo-format type=""fixedPoint"" [precision]=""2""> </dxo-format> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'ComM6'"" [caption]=""fieldControlData['ComM6']?.CaptionDescription"" [headerCellTemplate]=""'defaultHeaderTemplate'"" [visible]=""false""> <dxo-format type=""fixedPoint"" [precision]=""2""> </dxo-format> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'ComM7'"" [caption]=""fieldControlData['ComM7']?.CaptionDescription"" [headerCellTemplate]=""'defaultHeaderTemplate'"" [visible]=""false""> <dxo-format type=""fixedPoint"" [precision]=""2""> </dxo-format> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'ComM8'"" [caption]=""fieldControlData['ComM8']?.CaptionDescription"" [headerCellTemplate]=""'defaultHeaderTemplate'"" [visible]=""false""> <dxo-format type=""fixedPoint"" [precision]=""2""> </dxo-format> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'ComM9'"" [caption]=""fieldControlData['ComM9']?.CaptionDescription"" [headerCellTemplate]=""'defaultHeaderTemplate'"" [visible]=""false""> <dxo-format type=""fixedPoint"" [precision]=""2""> </dxo-format> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'ComM10'"" [caption]=""fieldControlData['ComM10']?.CaptionDescription"" [headerCellTemplate]=""'defaultHeaderTemplate'"" [visible]=""false""> <dxo-format type=""fixedPoint"" [precision]=""2""> </dxo-format> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'ComM11'"" [caption]=""fieldControlData['ComM11']?.CaptionDescription"" [headerCellTemplate]=""'defaultHeaderTemplate'"" [visible]=""false""> <dxo-format type=""fixedPoint"" [precision]=""2""> </dxo-format> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'ComM12'"" [caption]=""fieldControlData.ComM12']?.CaptionDescription"" [headerCellTemplate]=""'defaultHeaderTemplate'"" [visible]=""false""> <dxo-format type=""fixedPoint"" [precision]=""2""> </dxo-format> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'Remark'"" [caption]=""fieldControlData?.'Remark']?.CaptionDescription"" [visible]=""fieldControlData['Remark']?.visible"" [width]=""120"" [headerCellTemplate]=""'defaultHeaderTemplate'""></dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'Message'"" [minWidth]=""110"" [headerCellTemplate]=""'defaultHeaderTemplate'"" [caption]=""fieldControlData['Message']?.CaptionDescription"" [visible]=""fieldControlData['Message']?.visible""></dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'SubmitSAPDate'"" [caption]=""fieldControlData['SubmitSAPDate']?.CaptionDescription"" [visible]=""fieldControlData['SubmitSAPDate']?.visible"" [showWhenGrouped]=""true"" [dataType]=""'date'"" [format]=""'yyyy-MM-dd'"" [alignment]=""'center'"" [headerCellTemplate]=""'defaultHeaderTemplate'""> </dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'Comment'"" [caption]=""fieldControlData['CommentReject']?.CaptionDescription"" [visible]=""fieldControlData['CommentReject']?.visible"" [width]=""200"" [headerCellTemplate]=""'defaultHeaderTemplate'""></dxi-column> <dxi-column [filterType]=""'include'"" [dataField]=""'StateInfo'"" [caption]=""fieldControlData['StateInfo']?.CaptionDescription"" [visible]=""fieldControlData['StateInfo']?.visible"" [alignment]=""'center'"" [width]=""100"" [cellTemplate]=""'stateCellTemplate'"" [fixedPosition]=""'right'"" [fixed]=""true"" [headerCellTemplate]=""'defaultHeaderTemplate'""> <div *dxTemplate=""let item of 'stateCellTemplate'""> <span>{{ item.data.StateInfo | emptyValue }}</span> </div> </dxi-column> <!-- <dxi-column [filterType]=""'include'"" [dataField]=""'StatusName'"" [caption]=""fieldControlData['StatusName']?.CaptionDescription"" [visible]=""fieldControlData['StatusName']?.visible"" [alignment]=""'center'"" [width]=""110"" [cellTemplate]=""'statusCellTemplate'"" [fixed]=""true"" [fixedPosition]=""'right'"" [headerCellTemplate]=""'defaultHeaderTemplate'"" > <div *dxTemplate=""let item of 'statusCellTemplate'""> <span class=""badge-status badge wd-90"" [ngClass]=""item.data.StatusName | statusClass"">{{ item.data.StatusName }}</span> </div> </dxi-column> --> <!-- [visible]=""permissionActions[PermissionAction.Edit]"" --> <dxi-column [filterType]=""'include'"" [alignment]=""'center'"" [width]=""100"" [cellTemplate]=""'actionCellTemplate'"" [allowGrouping]=""false"" [allowHeaderFiltering]=""false"" [allowFiltering]=""false"" [allowHiding]=""false"" [allowSorting]=""false"" [allowSearch]=""false"" [showInColumnChooser]=""false"" [fixed]=""true"" [fixedPosition]=""'right'""> <div *dxTemplate=""let item of 'actionCellTemplate'""> <div class=""mx-1""> <button *ngIf=""item.data.CanEdit && permissionActions[PermissionAction.Edit]"" class=""btn btn-action btn-dark p-1 mr-2 no-box-shadow bs-tooltip"" title=""Edit Plan"" (click)=""editPlanClick($event, item.data)""> <i class=""fa-solid fa-edit fa-lg""></i> </button> <button *ngIf=""item.data.CanEdit && permissionActions[PermissionAction.Delete]"" class=""btn btn-danger btn-action p-1 mr-2 no-box-shadow bs-tooltip"" title=""Delete Plan"" (click)=""deletePlanItemClick(item.data)""> <i class=""fa-solid fa-trash-can fa-lg""></i> </button> </div> </div> </dxi-column>"; RegexOptions options = RegexOptions.Multiline; Regex regex = new Regex(pattern, options); string result = regex.Replace(input, substitution, 1); } }

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 C#, please visit: https://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex(v=vs.110).aspx