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
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

# coding=utf8 # the above tag defines encoding for this document and is for Python 2.x compatibility import re regex = r"([\d.-]+),(\d[\d.]+|(?:.)[-\d.]+)" test_str = ("Latitude/Longitude\n" "#Н/Д\n" "33.651272, -117.990384\n" "49.996387, 8.281494\n" "46.214978, -74.584957\n" "32.681523, -117.177851\n" "33.56666, -111.918578\n" "15.30686, 73.911334\n" "#Н/Д\n" "19.762559, -70.641425\n" "38.427717, 27.135626\n" "1.306349, 103.833247\n" "45.507321, -73.565433\n" "42.349027, -71.076333\n" "29.461875, -98.681267\n" "37.933797, -107.851831\n" "18.797263, 98.969404\n" "#Н/Д\n" "25.216342, 55.251621\n" "#Н/Д\n" "47.497362, 19.052305\n" "51.499288, -0.157697\n" "39.949119, -75.164844\n" "#Н/Д\n" "32.710152, -117.168404\n" "#Н/Д\n" "49.283749, -123.120783\n" "28.427015, -81.467563\n" "24.547717, -81.794206\n" "31.777066, 35.222551\n" "36.991932, 27.510750\n" "#Н/Д\n" "38.126632, 13.350806\n" "46.438612, 6.906799\n" "40.42222, -3.684213\n" "45.43074, 12.33365\n" "#Н/Д\n" "43.748048, 7.438787\n" "#Н/Д\n" "40.75802, -73.974978\n" "40.55092, 14.247042\n" "45.501572, -73.577923\n" "29.954252, -90.067597\n" "37.937361, -107.846632\n" "#Н/Д\n" "#Н/Д\n" "41.884363, -87.620725\n" "42.35773, -71.06013\n" "33.845612, -84.370387\n" "29.955761, -90.067887\n" "38.562024, -76.048393\n" "38.29757, -122.289269\n" "40.752888, -73.981033\n" "47.610043, -122.335561\n" "33.64516, -111.917536\n" "32.848638, -117.273695\n" "#Н/Д\n" "#Н/Д\n" "53.334528, -6.258232\n" "51.494308, -0.175558\n" "1.29343, 103.858809\n" "18.698384, -68.451145\n" "43.292645, 5.359823\n" "59.331914, 18.080605\n" "40.414559, -3.701406\n" "#Н/Д\n" "10.641584, -85.658913\n" "#Н/Д\n" "45.51986, -122.677339\n" "33.720253, -116.331044\n" "39.184541, -106.814381\n" "#Н/Д\n" "#Н/Д\n" "48.870763, 2.32976\n" "#Н/Д\n" "19.427554, -99.192761\n" "20.912971, -156.692167\n" "-36.844873, 174.757413\n" "#Н/Д\n" "14.550757, 121.023001\n" "52.351381, 4.872723\n" "#Н/Д\n" "#Н/Д\n" "46.507219, 6.628285\n" "50.091392, 14.418329\n" "#Н/Д\n" "#Н/Д\n" "-23.616574, -46.698208\n" "34.988825, 135.773575\n" "48.875029, 2.301244\n" "48.204556, 16.356343\n" "41.061244, 28.989182\n" "36.152536, -86.78409\n" "52.508285, 13.372674\n" "37.782208, -122.404827\n" "47.623197, -70.143448\n" "30.26815, -97.741755\n" "#Н/Д\n" "44.975925, -93.268833\n" "45.42487, -75.694846\n" "24.90005, -80.655148\n" "45.500618, -73.567779\n" "32.25354, -64.826465\n" "45.4288, -75.6909\n" "45.754784, 4.834093\n" "43.165676, -73.070642\n" "25.760484, -80.190906\n" "39.639253, -106.36816\n" "41.901359, -87.627417\n" "48.139461, 11.556781\n" "45.5175, -122.680077\n" "#Н/Д\n" "51.507894, -0.143671\n" "41.881643, -87.625001\n" "#Н/Д\n" "43.586675, -110.829048\n" "39.199682, -120.21733\n" "#Н/Д\n" "42.357306, -71.060687\n" "52.367811, 4.883059\n" "22.902842, -109.893796\n" "#Н/Д\n" "51.216544, 6.752721\n" "#Н/Д\n" "25.112432, 55.138978\n" "22.297617, 114.173412\n" "#Н/Д\n" "#Н/Д\n" "50.94043, 6.96953\n" "45.434116, 12.345296\n" "#Н/Д\n" "50.460406, 30.525621\n" "30.071856, 31.227775\n" "33.688495, -116.310231\n" "40.441484, -80.001392\n" "45.502202, -73.575932\n" "33.092115, -117.266082\n" "40.76821, -73.984871\n" "-17.485714, -149.844102\n" "45.645307, -74.949563\n" "52.512172, 13.392269\n" "#Н/Д\n" "51.49732, -0.156256\n" "39.94934, -75.148884\n" "30.16498, -97.447389\n" "32.786262, -96.802363\n" "30.247365, -97.750116\n" "20.464019, -86.98145\n" "32.080843, -81.093186\n" "40.757794, -73.983784\n" "19.367662, -99.261276\n" "-8.491628, 115.253863\n" "#Н/Д\n" "#Н/Д\n" "43.740065, 7.429895\n" "#Н/Д\n" "42.862323, 11.877213\n" "41.907613, 12.486654\n" "55.733426, 37.643884\n" "#Н/Д\n" "#Н/Д\n" "43.645957, -79.381225\n" "48.868479, 2.32696\n" "39.956932, -75.170271\n" "45.520565, -122.682308\n" "43.567281, -70.227882\n" "43.298433, 5.370189\n" "#Н/Д\n" "#Н/Д\n" "51.499391, -0.132902\n" "37.859041, -122.242507\n" "50.087629, 14.418374\n" "#Н/Д\n" "21.278263, -157.830944\n" "39.996165, -78.506873\n" "34.059998, -118.437348\n" "39.747902, -104.992659\n" "33.80088, -117.917943\n" "#Н/Д\n" "20.00622, -155.824418\n" "45.686618, -121.904606\n" "51.515227, -0.15689\n" "#Н/Д\n" "41.901996, 12.496173\n" "48.871137, 2.305048\n" "#Н/Д\n" "21.049951, 105.839836\n" "#Н/Д\n" "48.86731, 2.285653\n" "11.546306, 104.933521\n" "-31.960749, 115.873621\n" "52.502489, 13.331838\n" "#Н/Д\n" "31.955839, 35.909983\n" "48.868414, 2.321325\n" "#Н/Д\n" "51.526777, -0.132491\n" "#Н/Д\n" "45.427556, 12.319975\n" "#Н/Д\n" "#Н/Д\n" "10.426671, -75.551485\n" "#Н/Д\n" "43.683912, 7.234447\n" "40.722705, -74.004755\n" "#Н/Д\n" "4.670009, -74.053064\n" "20.701884, -103.376744\n" "41.898711, -87.627507\n" "59.330871, 18.07692\n" "39.289747, -76.615713\n" "42.648166, 11.512796\n" "41.880875, -87.631752\n" "#Н/Д\n" "18.358936, -65.627641\n" "41.891105, -87.627045\n" "#Н/Д\n" "41.919833, 12.48141\n" "-34.890494, -56.055399\n" "40.719796, -74.000036\n" "#Н/Д\n" "34.076409, -118.377376\n" "18.358936, -65.627641\n" "47.606956, -122.334083\n" "#Н/Д\n" "43.775288, 11.268054\n" "48.877209, 2.296827\n" "50.114976, 8.680725\n" "48.875689, 2.325465\n" "#Н/Д\n" "48.213049, 16.37988\n" "38.905748, -77.051673\n" "41.89775, 12.477402\n" "-12.097482, -77.038037\n" "41.047295, 29.009608\n" "32.782866, -79.932486\n" "38.863056, -77.060109\n" "#Н/Д\n" "25.80611, -80.123885\n" "25.817853, -80.122189\n" "33.65815, -118.002853\n" "43.649088, -79.376254\n" "29.891735, -81.313635\n" "25.925468, -81.728497\n" "32.067345, -81.094695\n" "35.566771, -82.543989\n" "#Н/Д\n" "40.758564, -73.989752\n" "37.785151, -122.405832\n" "27.973556, -82.828887\n" "25.082129, -77.313443\n" "#Н/Д\n" "39.604113, -106.518129\n" "28.403354, -81.527306\n" "33.018943, -117.205013\n" "21.135079, -86.754185\n" "38.312007, -122.482274\n" "7.977468, 98.280525\n" "#Н/Д\n" "#Н/Д\n" "32.078956, -81.084662\n" "#Н/Д\n" "#Н/Д\n" "35.681788, 139.766761\n" "#Н/Д\n" "-37.81482, 144.969433\n" "-6.192999, 106.822267\n" "#Н/Д\n" "51.507796, -0.132736\n" "38.895247, -77.010755\n" "#Н/Д\n" "30.259891, -97.739039\n" "21.799584, -72.169424\n" "35.68849, -105.94199\n" "32.716214, -117.159884\n" "37.786773, -122.411287\n" "25.792099, -80.129032\n" "25.082129, -77.313443\n" "40.715002, -74.015222\n" "33.529497, -111.9731\n" "34.054158, -118.412522\n" "#Н/Д\n" "35.67413, 139.741144\n" "22.293418, 114.1741\n" "8.086453, 98.298955\n" "-33.871776, 151.207517\n" "19.424141, -99.164983\n" "37.56499, 126.981369\n" "39.905531, 116.452054\n" "#Н/Д\n" "41.907184, 12.465629\n" "41.910272, 12.490268\n" "45.435363, 12.33034\n" "43.48799, -1.554047\n" "43.552132, 7.020803\n" "43.770168, 11.254647\n" "51.504939, -0.150134\n" "40.632959, 14.597304\n" "45.463074, 9.197959\n" "18.443791, -66.017754\n" "53.339403, -6.26142\n" "#Н/Д\n" "#Н/Д\n" "#Н/Д\n" "#Н/Д\n" "#Н/Д\n" "20.627574, -87.071673\n" "13.738771, 100.546892\n" "24.498927, 54.367727\n" "10.784333, 106.70233\n" "51.508404, -0.106799\n" "34.869604, -111.758506\n" "25.06669, -80.472195\n" "16.826175, -99.862064\n" "40.764524, -73.978457\n" "#Н/Д\n" "32.358914, -111.025531\n" "47.604883, -122.336772\n" "33.447461, -112.073668\n" "#Н/Д\n" "41.042358, 28.997222\n" "13.720597, 100.521526\n" "-33.92169, 18.41503\n" "40.632061, 14.388932\n" "45.466812, 9.19417\n" "32.08917, 34.770897\n" "27.969708, -82.830149\n" "#Н/Д\n" "40.759394, -73.97491\n" "#Н/Д\n" "41.883627, 8.783506\n" "37.854097, 15.287703\n" "#Н/Д\n" "39.950948, -75.169541\n" "41.894755, -87.624649\n" "32.801184, -79.753959\n" "#Н/Д\n" "29.741522, -95.457223\n" "#Н/Д\n" "51.517992, -0.149945\n" "#Н/Д\n" "#Н/Д\n" "#Н/Д\n" "29.956285, -90.065736\n" "48.201709, 16.37102\n" "#Н/Д\n" "15.458414, 73.834555\n" "#Н/Д\n" "27.655985, -80.356579\n" "38.726695, -9.155536\n" "39.767605, -86.159359\n" "34.100633, -118.342451\n" "34.018671, -118.501103\n" "#Н/Д\n" "33.426067, -111.93888\n" "40.413861, -3.701654\n" "37.443679, -122.161438\n" "25.78198, -80.142873\n" "43.775408, 11.236838\n" "29.768061, -95.459858\n" "34.094441, -118.374329\n" "#Н/Д\n" "-8.780949, 115.225344\n" "#Н/Д\n" "41.389465, 2.166265\n" "43.503149, 16.466029\n" "#Н/Д\n" "43.264851, -2.944282\n" "49.360028, 0.071022\n" "#Н/Д\n" "#Н/Д\n" "42.69499, 18.015217\n" "25.991705, -80.118572\n" "#Н/Д\n" "#Н/Д\n" "1.279973, 103.849728\n" "13.043045, 80.248685\n" "40.757524, -73.984059\n" "40.682436, -111.556877\n" "#Н/Д\n" "#Н/Д\n" "#Н/Д\n" "40.719404, -74.004902\n" "49.28794, -123.113052\n" "43.473395, -110.757499\n" "#Н/Д\n" "-33.868221, 151.195376\n" "41.880283, -87.626698\n" "13.719827, 100.524582\n" "31.235252, 121.505749\n" "35.66823, 139.741089\n" "13.373635, 103.860755\n" "51.509918, -0.155092\n" "41.905609, 12.481517\n" "49.359441, 0.068769\n" "7.809057, 98.407633\n" "43.548459, 7.011745\n" "52.372646, 4.894815\n" "24.414582, 54.490653\n" "56.320216, -2.730864\n" "20.631616, -87.067938\n" "47.612364, -122.352234\n" "#Н/Д\n" "#Н/Д\n" "#Н/Д\n" "#Н/Д\n" "25.771157, -80.189093\n" "40.722146, -74.004627\n" "34.420361, -119.702475\n" "#Н/Д\n" "#Н/Д\n" "41.030366, 28.97213\n" "#Н/Д\n" "46.203376, 6.152146\n" "38.305045, -122.283122\n" "47.656935, -122.207112\n" "13.734435, 100.564074\n" "#Н/Д\n" "40.397731, 116.685866\n" "50.086448, 14.433853\n" "41.023608, 28.975579\n" "23.116958, 113.330099\n" "#Н/Д\n" "#Н/Д\n" "#Н/Д\n" "#Н/Д\n" "36.157258, -86.784757\n" "22.889828, -109.906413\n" "#Н/Д\n" "#Н/Д\n" "#Н/Д\n" "37.959827, 23.721196\n" "-37.814119, 144.972841\n" "-28.029305, 153.432039\n" "#Н/Д\n" "40.436341, -3.690219\n" "25.084986, -77.327843\n" "#Н/Д\n" "#Н/Д\n" "#Н/Д\n" "#Н/Д\n" "40.764796, -111.89171\n" "33.845336, -118.39689\n" "#Н/Д\n" "22.898715, -109.869525\n" "35.627764, 139.740875\n" "#Н/Д\n" "29.610563, -98.606705\n" "#Н/Д\n" "33.803185, -111.926368\n" "41.886398, -87.620373\n" "19.92547, -155.888329\n" "-37.824004, 144.957279\n" "47.610573, -122.341351\n" "-31.963829, 115.895371\n" "38.721, -9.146966\n" "9.8547, -85.401159\n" "41.893896, -87.625155\n" "28.467883, -81.467381\n" "39.504098, 2.532353\n" "50.117189, 8.687097\n" "#Н/Д\n" "-6.235031, 106.830287\n" "#Н/Д\n" "48.844908, 2.252661\n" "#Н/Д\n" "51.511719, -0.11832\n" "41.406146, 2.200864\n" "43.874187, -121.446471\n" "#Н/Д\n" "20.627574, -87.071673\n" "14.574209, 120.988054\n" "26.508515, 127.857330\n" "#Н/Д\n" "#Н/Д\n" "45.479385, 9.196131\n" "-18.108194, 177.32183\n" "45.446452, 12.331218\n" "25.770522, -80.189339\n" "-8.791699, 115.229904\n" "-8.799112, 115.2319\n" "-6.225909, 106.798943\n" "31.245349, 121.493066\n" "43.560583, 39.77537\n" "#Н/Д\n" "32.709513, -117.232061\n" "64.139838, -21.888807\n" "36.12269, -115.170194\n" "31.221819, 121.475592\n" "53.549723, 9.988088\n" "25.059742, 55.127965\n" "#Н/Д\n" "28.465954, -81.469608\n" "-8.706277, 115.261997\n" "39.908628, 116.417694\n" "#Н/Д\n" "50.83615, 4.357117\n" "46.574756, 11.671541\n" "-22.985935, -43.207361\n" "32.775196, -96.804121\n" "#Н/Д\n" "41.906055, -87.628471\n" "25.125078, 55.113931\n" "26.154067, -80.100589\n" "39.203812, -106.95979\n" "41.408452, 2.217902\n" "#Н/Д\n" "#Н/Д\n" "#Н/Д\n" "#Н/Д\n" "32.836131, -96.778019\n" "37.807486, -122.42046\n" "#Н/Д\n" "31.387605, 120.948235\n" "53.54026, -113.489494\n" "#Н/Д\n" "64.146367, -21.930777\n" "26.703167, -80.0407\n" "#Н/Д\n" "27.709328, -82.737269\n" "#Н/Д\n" "40.766017, -73.978641\n" "30.554897, -81.444502\n" "#Н/Д\n" "#Н/Д\n" "31.269896, 121.587441\n" "36.107349, -115.176584\n" "-1.521942, 35.336838\n" "39.927602, -105.118404\n" "36.157262, -86.775414\n" "#Н/Д\n" "43.567889, 7.114898\n" "29.423081, -98.489885\n" "30.254173, 120.161609\n" "36.090861, -115.175027\n" "33.742683, -116.405986\n" "30.291154, -97.858809\n" "#Н/Д\n" "39.927215, 116.460478\n" "36.102251, -115.169968\n" "36.120611, -115.176839\n" "#Н/Д\n" "#Н/Д\n" "#Н/Д\n" "21.703253, -157.996841\n" "-31.958793, 115.868521\n" "1.292305, 103.858594\n" "25.789019, -80.129468\n" "#Н/Д\n" "31.628794, -7.99668\n" "#Н/Д\n" "19.065452, 72.864425\n" "#Н/Д\n" "#Н/Д\n" "36.150776, -86.802207\n" "-1.277851, 36.815342\n" "#Н/Д\n" "#Н/Д\n" "37.546436, -77.444152\n" "34.103081, -118.339326\n" "#Н/Д\n" "42.349194, -71.072526\n" "44.257279, -71.439481\n" "34.202407, 108.988552\n" "34.008974, -118.492874\n" "29.947995, -90.066145\n" "44.97891, -93.275052\n" "#Н/Д\n" "#Н/Д\n" "#Н/Д\n" "26.051377, -80.211226\n" "32.63125, -117.135418\n" "#Н/Д\n" "39.951743, -75.160204\n" "27.992844, -82.372114\n" "#Н/Д\n" "#Н/Д\n" "38.979419, -76.505803\n" "#Н/Д\n" "#Н/Д\n" "#Н/Д\n" "#Н/Д\n") matches = re.finditer(regex, test_str, re.MULTILINE) for matchNum, match in enumerate(matches, start=1): print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group())) for groupNum in range(0, len(match.groups())): groupNum = groupNum + 1 print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum))) # 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