Regular Expressions 101

Save & Share

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
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
  • Match everything enclosed
    (?:...)
  • Capture everything enclosed
    (...)
  • 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

/
/
gm

Test String

Substitution

Processing...

Code Generator

Generated Code

import Foundation let pattern = #"(?<=^| and )((?:(?:.\.|[\w\-\u00C0-\u017F]+)\s*)(?:(?<! and )(?:.\.|[\w\-\u00C0-\u017F]+)\s*)*) ([\w\-\u00C0-\u017F]+)(?= and |$)"# let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines) let testString = #"James S. Santangelo and Rob W. Ness and Beata Cohan and Connor R. Fitzpatrick and Simon G. Innes and Sophie Koch and Lindsay S. Miles and Samreen Munim and Pedro R. Peres-Neto and Cindy Prashad and Alex T. Tong and Windsor E. Aguirre and Philips O. Akinwole and Marina Alberti and Jackie Álvarez and Jill T. Anderson and Joseph J. Anderson and Yoshino Ando and Nigel R. Andrew and Fabio Angeoletto and Daniel N. Anstett and Julia Anstett and Felipe Aoki-Gonçalves and A. Z. Andis Arietta and Mary T. K. Arroyo and Emily J. Austen and Fernanda Baena-Díaz and Cory A. Barker and Howard A. Baylis and Julia M. Beliz and Alfonso Benitez-Mora and David Bickford and Gabriela Biedebach and Gwylim S. Blackburn and Mannfred M. A. Boehm and Stephen P. Bonser and Dries Bonte and Jesse R. Bragger and Cristina Branquinho and Kristien I. Brans and Jorge C. Bresciano and Peta D. Brom and Anna Bucharova and Briana Burt and James F. Cahill and Katelyn D. Campbell and Elizabeth J. Carlen and Diego Carmona and Maria Clara Castellanos and Giada Centenaro and Izan Chalen and Jaime A. Chaves and Mariana Chávez-Pesqueira and Xiao-Yong Chen and Angela M. Chilton and Kristina M. Chomiak and Diego F. Cisneros-Heredia and Ibrahim K. Cisse and Aimée T. Classen and Mattheau S. Comerford and Camila Cordoba Fradinger and Hannah Corney and Andrew J. Crawford and Kerri M. Crawford and Maxime Dahirel and Santiago David and Robert De Haan and Nicholas J. Deacon and Clare Dean and Ek del-Val and Eleftherios K. Deligiannis and Derek Denney and Margarete A. Dettlaff and Michelle F. DiLeo and Yuan-Yuan Ding and Moisés E. Domínguez-López and Davide M. Dominoni and Savannah L. Draud and Karen Dyson and Jacintha Ellers and Carlos I. Espinosa and Liliana Essi and Mohsen Falahati-Anbaran and Jéssica C. F. Falcão and Hayden T. Fargo and Mark D. E. Fellowes and Raina M. Fitzpatrick and Leah E. Flaherty and Pádraic J. Flood and María F. Flores and Juan Fornoni and Amy G. Foster and Christopher J. Frost and Tracy L. Fuentes and Justin R. Fulkerson and Edeline Gagnon and Frauke Garbsch and Colin J. Garroway and Aleeza C. Gerstein and Mischa M. Giasson and E. Binney Girdler and Spyros Gkelis and William Godsoe and Anneke M. Golemiec and Mireille Golemiec and César González-Lagos and Amanda J. Gorton and Kiyoko M. Gotanda and Gustaf Granath and Stephan Greiner and Joanna S. Griffiths and Filipa Grilo and Pedro E. Gundel and Benjamin Hamilton and Joyce M. Hardin and Tianhua He and Stephen B. Heard and André F. Henriques and Melissa Hernández-Poveda and Molly C. Hetherington-Rauth and Sarah J. Hill and Dieter F. Hochuli and Kathryn A. Hodgins and Glen R. Hood and Gareth R. Hopkins and Katherine A. Hovanes and Ava R. Howard and Sierra C. Hubbard and Carlos N. Ibarra-Cerdeña and Carlos Iñiguez-Armijos and Paola Jara-Arancio and Benjamin J. M. Jarrett and Manon Jeannot and Vania Jiménez-Lobato and Mae Johnson and Oscar Johnson and Philip P. Johnson and Reagan Johnson and Matthew P. Josephson and Meen Chel Jung and Michael G. Just and Aapo Kahilainen and Otto S. Kailing and Eunice Kariñho-Betancourt and Regina Karousou and Lauren A. Kirn and Anna Kirschbaum and Anna-Liisa Laine and Jalene M. LaMontagne and Christian Lampei and Carlos Lara and Erica L. Larson and Adrián Lázaro-Lobo and Jennifer H. Le and Deleon S. Leandro and Christopher Lee and Yunting Lei and Carolina A. León and Manuel E. Lequerica Tamara and Danica C. Levesque and Wan-Jin Liao and Megan Ljubotina and Hannah Locke and Martin T. Lockett and Tiffany C. Longo and Jeremy T. Lundholm and Thomas MacGillavry and Christopher R. Mackin and Alex R. Mahmoud and Isaac A. Manju and Janine Mariën and D. Nayeli Martínez and Marina Martínez-Bartolomé and Emily K. Meineke and Wendy Mendoza-Arroyo and Thomas J. S. Merritt and Lila Elizabeth L. Merritt and Giuditta Migiani and Emily S. Minor and Nora Mitchell and Mitra Mohammadi Bazargani and Angela T. Moles and Julia D. Monk and Christopher M. Moore and Paula A. Morales-Morales and Brook T. Moyers and Miriam Muñoz-Rojas and Jason Munshi-South and Shannon M. Murphy and Maureen M. Murúa and Melisa Neila and Ourania Nikolaidis and Iva Njunjić and Peter Nosko and Juan Núñez-Farfán and Takayuki Ohgushi and Kenneth M. Olsen and Øystein H. Opedal and Cristina Ornelas and Amy L. Parachnowitsch and Aaron S. Paratore and Angela M. Parody-Merino and Juraj Paule and Octávio S. Paulo and João Carlos Pena and Vera W. Pfeiffer and Pedro Pinho and Anthony Piot and Ilga M. Porth and Nicholas Poulos and Adriana Puentes and Jiao Qu and Estela Quintero-Vallejo and Steve M. Raciti and Joost A. M. Raeymaekers and Krista M. Raveala and Diana J. Rennison and Milton C. Ribeiro and Jonathan L. Richardson and Gonzalo Rivas-Torres and Benjamin J. Rivera and Adam B. Roddy and Erika Rodriguez-Muñoz and José Raúl Román and Laura S. Rossi and Jennifer K. Rowntree and Travis J. Ryan and Santiago Salinas and Nathan J. Sanders and Luis Y. Santiago-Rosario and Amy M. Savage and J.F. Scheepens and Menno Schilthuizen and Adam C. Schneider and Tiffany Scholier and Jared L. Scott and Summer A. Shaheed and Richard P. Shefferson and Caralee A. Shepard and Jacqui A. Shykoff and Georgianna Silveira and Alexis D. Smith and Lizet Solis-Gabriel and Antonella Soro and Katie V. Spellman and Kaitlin Stack Whitney and Indra Starke-Ottich and Jörg G. Stephan and Jessica D. Stephens and Justyna Szulc and Marta Szulkin and Ayco J. M. Tack and Ítalo Tamburrino and Tayler D. Tate and Emmanuel Tergemina and Panagiotis Theodorou and Ken A. Thompson and Caragh G. Threlfall and Robin M. Tinghitella and Lilibeth Toledo-Chelala and Xin Tong and Léa Uroy and Shunsuke Utsumi and Martijn L. Vandegehuchte and Acer VanWallendael and Paula M. Vidal and Susana M. Wadgymar and Ai-Ying Wang and Nian Wang and Montana L. Warbrick and Kenneth D. Whitney and Miriam Wiesmeier and J. Tristian Wiles and Jianqiang Wu and Zoe A. Xirocostas and Zhaogui Yan and Jiahe Yao and Jeremy B. Yoder and Owen Yoshida and Jingxiong Zhang and Zhigang Zhao and Carly D. Ziter and Matthew P. Zuellig and Rebecca A. Zufall and Juan E. Zurita and Sharon E. Zytynska and Marc T. J. Johnson"# let stringRange = NSRange(location: 0, length: testString.utf16.count) let substitutionString = #"$2, $1"# let result = regex.stringByReplacingMatches(in: testString, range: stringRange, withTemplate: substitutionString) print(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 Swift 5.2, please visit: https://developer.apple.com/documentation/foundation/nsregularexpression