Regular Expressions 101

Save & Share

  • Regex Version: ver. 1
  • 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

/
/
gm

Test String

Code Generator

Generated Code

#include <StringConstants.au3> ; to declare the Constants of StringRegExp #include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate Local $sRegex = "(?m)("text":\s*\{\s*"ja_JP":\s*")([^"]*)"" Local $sString = ""textList": [" & @CRLF & _ " {" & @CRLF & _ " "id": 4," & @CRLF & _ " "name": "modeselect"," & @CRLF & _ " "folder": true, "children": [" & @CRLF & _ " {" & @CRLF & _ " "id": 13," & @CRLF & _ " "name": "Motion"," & @CRLF & _ " "fontId": 6," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": "Motion" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 12," & @CRLF & _ " "name": "Story"," & @CRLF & _ " "fontId": 7," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": "Story" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 11," & @CRLF & _ " "name": "Main_Character"," & @CRLF & _ " "fontId": 6," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": "Main Character" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 5," & @CRLF & _ " "name": "Mode_select"," & @CRLF & _ " "fontId": 5," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": "Mode Select" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 24," & @CRLF & _ " "name": "Story_Mode"," & @CRLF & _ " "fontId": 5," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": "Story Mode" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 25," & @CRLF & _ " "name": "Battle_Mode"," & @CRLF & _ " "fontId": 5," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": "Battle Mode" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 8297," & @CRLF & _ " "name": "Dictionary"," & @CRLF & _ " "fontId": 5," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": "Dictionary" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 46," & @CRLF & _ " "name": "Z_desition"," & @CRLF & _ " "fontId": 9," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": "Z key:OK\nC key:Back" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 47," & @CRLF & _ " "name": "back_to_the_title"," & @CRLF & _ " "fontId": 9," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": " Back to the title?" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 51," & @CRLF & _ " "name": "select_mode"," & @CRLF & _ " "fontId": 9," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": " Select Mode" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 8298," & @CRLF & _ " "name": "Go_to_the_Story_Mode"," & @CRLF & _ " "fontId": 9," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": "Go to the Story Mode?" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 8299," & @CRLF & _ " "name": "Go_to_the_Battle_Mode"," & @CRLF & _ " "fontId": 9," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": "Go to the Battle Mode?" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 8300," & @CRLF & _ " "name": "Go_to_the_Dictionary"," & @CRLF & _ " "fontId": 9," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": "Go to the Dictionary?" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 48," & @CRLF & _ " "name": "ok"," & @CRLF & _ " "fontId": 8," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": "OK" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 49," & @CRLF & _ " "name": "cancel"," & @CRLF & _ " "fontId": 8," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": "Cancel" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 7," & @CRLF & _ " "name": "Story_outline"," & @CRLF & _ " "fontId": 9," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": "自由奔放で傲慢な魔族\nであるアストリア。\nアストリアは最近\n地上に住まう種族の\n殲滅に勤しんでいた。\n次第に恐怖と畏れから\n地上に住まう者達に名が\n知れ渡り始めていた。\nある日、アストリアの\n元に面倒事が\n持ち込まれる・・・" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 6," & @CRLF & _ " "name": "character_name"," & @CRLF & _ " "folder": true, "children": [" & @CRLF & _ " {" & @CRLF & _ " "id": 8," & @CRLF & _ " "name": "Astoria"," & @CRLF & _ " "fontId": 5," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": " Astoria" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 19," & @CRLF & _ " "name": "Test2_name"," & @CRLF & _ " "fontId": 5," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": " Test2" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 20," & @CRLF & _ " "name": "Test3_name"," & @CRLF & _ " "fontId": 5," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": " Test3" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 21," & @CRLF & _ " "name": "Test4_name"," & @CRLF & _ " "fontId": 5," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": " Test4" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 22," & @CRLF & _ " "name": "Test5_name"," & @CRLF & _ " "fontId": 5," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": " Test5" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 23," & @CRLF & _ " "name": "Test6_name"," & @CRLF & _ " "fontId": 5," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": " Test6" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }" & @CRLF & _ " ]" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 9," & @CRLF & _ " "name": "story_name"," & @CRLF & _ " "folder": true, "children": [" & @CRLF & _ " {" & @CRLF & _ " "id": 10," & @CRLF & _ " "name": "Story1_name"," & @CRLF & _ " "fontId": 5," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": "1. 魔族娘の自由旅" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 14," & @CRLF & _ " "name": "Story2_name"," & @CRLF & _ " "fontId": 5," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": "2. " }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 15," & @CRLF & _ " "name": "Story3_name"," & @CRLF & _ " "fontId": 5," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": "3. " }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 16," & @CRLF & _ " "name": "Story4_name"," & @CRLF & _ " "fontId": 5," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": "4. " }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 17," & @CRLF & _ " "name": "Story5_name"," & @CRLF & _ " "fontId": 5," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": "5. " }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 18," & @CRLF & _ " "name": "Story6_name"," & @CRLF & _ " "fontId": 5," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": "6. " }," & @CRLF & _ " "folder": false" & @CRLF & _ " }" & @CRLF & _ " ]" & @CRLF & _ " }" & @CRLF & _ " ]" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 26," & @CRLF & _ " "name": "stageselect"," & @CRLF & _ " "folder": true, "children": [" & @CRLF & _ " {" & @CRLF & _ " "id": 31," & @CRLF & _ " "name": "Stage_select"," & @CRLF & _ " "fontId": 5," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": "Stage Select" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 32," & @CRLF & _ " "name": "GameStart"," & @CRLF & _ " "fontId": 5," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": "Game Start" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 33," & @CRLF & _ " "name": "Enemy_Character"," & @CRLF & _ " "fontId": 6," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": "Enemy Character" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 50," & @CRLF & _ " "name": "back_to_the_modeselect"," & @CRLF & _ " "fontId": 9," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": "Back to the Mode Select?" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 27," & @CRLF & _ " "name": "character_name_stage"," & @CRLF & _ " "folder": true, "children": [" & @CRLF & _ " {" & @CRLF & _ " "id": 34," & @CRLF & _ " "name": "Leonor"," & @CRLF & _ " "fontId": 5," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": " Leonor" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 35," & @CRLF & _ " "name": "Riz"," & @CRLF & _ " "fontId": 5," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": " Riz" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 36," & @CRLF & _ " "name": "Mary"," & @CRLF & _ " "fontId": 5," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": " Mary" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 37," & @CRLF & _ " "name": "Koyo"," & @CRLF & _ " "fontId": 5," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": " Koyo" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 38," & @CRLF & _ " "name": "Beryl"," & @CRLF & _ " "fontId": 5," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": " Beryl" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 39," & @CRLF & _ " "name": "Amelia"," & @CRLF & _ " "fontId": 5," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": " Amelia" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }" & @CRLF & _ " ]" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 28," & @CRLF & _ " "name": "stage_outline"," & @CRLF & _ " "folder": true, "children": [" & @CRLF & _ " {" & @CRLF & _ " "id": 979," & @CRLF & _ " "name": "stage1_outline"," & @CRLF & _ " "fontId": 9," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": "アストリアは日課である\n種族の殲滅を終わらせて\n城で休息を取っていた。\nそんな時、何者かが城に\n侵入した事を察知する。\n急ぎ様子を見に行くと\nそこには興味深そうに\n城を見渡す堕天使の\nレオノールが居た・・・" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 980," & @CRLF & _ " "name": "stage2_outline"," & @CRLF & _ " "fontId": 9," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": "レオノールから\n聞き出した情報を頼りに\n妖狐を探していた。\nその最中、魔族のリズが\n道の真ん中で風景画を\n描いているのを見かける\n興味本位で声を掛け\n描いている絵を見せて\nもらったのだが・・・" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 981," & @CRLF & _ " "name": "stage3_outline"," & @CRLF & _ " "fontId": 9," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": "ジメジメと湿った空気が\n充満している薄暗い\n森の中を進んでいると\n奇妙な帽子を被った\n魔女のメアリーが\nアストリアの前に\n立ち塞がる。\n妖狐の差し金で\nアストリアの邪魔を\nしようとするが・・・" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 982," & @CRLF & _ " "name": "stage4_outline"," & @CRLF & _ " "fontId": 9," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": "森を抜けた先に\n古びた神社を見つけた\nアストリア。\n中から九つの白い尾を\n持った妖狐の狐耀が\n現れる。\nアストリアと狐耀は\n自身の主張を通すべく\n力尽くで相手を屈服\nさせようとする・・・" }," & @CRLF & _ " "folder": false" & @CRLF & _ " }," & @CRLF & _ " {" & @CRLF & _ " "id": 983," & @CRLF & _ " "name": "stage5_outline"," & @CRLF & _ " "fontId": 9," & @CRLF & _ " "letterSpacing": 0," & @CRLF & _ " "lineSpacing": 0," & @CRLF & _ " "text": { "ja_JP": "面倒事を終わらせて\n気が晴れたアストリアに\n竜人種のベリルが声を\n掛けてくる。\nアストリアが狐耀を\n倒したことに対して\nベリルは感謝を示す。\nどうでも良い\nアストリアは休むべく\n帰ろうとするが・・・" }," & @CRLF & _ " "folder": false" Local $aArray = StringRegExp($sString, $sRegex, $STR_REGEXPARRAYGLOBALFULLMATCH) Local $aFullArray[0] For $i = 0 To UBound($aArray) -1 _ArrayConcatenate($aFullArray, $aArray[$i]) Next $aArray = $aFullArray ; Present the entire match result _ArrayDisplay($aArray, "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 AutoIt, please visit: https://www.autoitscript.com/autoit3/docs/functions/StringRegExp.htm