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

r'
'
gm

Test String

Substitution

Processing...

Code Generator

Generated Code

import java.util.regex.Matcher; import java.util.regex.Pattern; public class Example { public static void main(String[] args) { final String regex = "^(?![\"#\\n])(.*?)=(.*?)([#].*)?$"; final String string = "\"\"\"Configuration file.\"\"\"\n\n\n" + "CONFIG_VERSION = \"0.5.1\" # still have some obsolete keys\n\n\n" + "# ======================================================================================================================\n" + "# ROBOT HARDWARE PROPERTIES\n" + "# ======================================================================================================================\n" + "CORK_TO_CAMERA_DISTANCE_X = 2 #21 #3 # # distance between camera and cork on the robot, X axis, relative, mm\n" + "CORK_TO_CAMERA_DISTANCE_Y = 28 #24 #25# distance between camera and cork on the robot, Y axis, relative, mm\n\n\n" + "# ======================================================================================================================\n" + "# NAVIGATION ROUTING SETTINGS\n" + "# ======================================================================================================================\n" + "#KP = 0.2 # for -10000 : *0.55 wheels turning degrees multiplier\n" + "#KI = 0.0092 # fpr rpm-1000 : *0.91\n" + "KP = {-2500:0.001, 0:0.2, -10000:0.50*0.55}\n" + "KI = {-2500:0.0092, 0:0.0092, -10000:0.0092*0.91}\n\n" + "MANEUVERS_FREQUENCY = 1 # seconds\n" + "# max distance in mm-s of robot's deviation from planned moving vector\n" + "# if dev. is bigger than this - robot will turn to it's planned moving vector\n" + "COURSE_SIDE_DEVIATION_MAX = 50 # max allowed robot's deviation from course im mm-s (threshold)\n" + "# distance to stop in mm-s between robot and path ending point\n" + "# (its a good idea to keep this value greater than allowed course deviation)\n" + "COURSE_DESTINATION_DIFF = 3000\n" + "COURSE_ADJ_SMC_VAL = 10 # nav wheels turn value when trying to get back to the course (SHOULD BE POSITIVE VALUE!)\n" + "WINDOW = float(\"inf\") # anyway, the integral is used for only some hundreds of time\n" + "# AB moving vector used as A----A1--B, where A1 is point when robot starts moving to next point.\n" + "# this determines A1-B distance\n" + "MANEUVER_START_DISTANCE = {False:4000, True:4000} \n" + "USE_SPEED_LIMIT = True # when distance to target point is less than specified in the config\n" + "DECREASE_SPEED_TRESHOLD = 5000 # millimeters\n" + "SUM_ANGLES_HISTORY_MAX = 1000 # max value and min -value of sum(angles_history), should be positive here, in config\n" + "# distance between sides of spiral robot movements, expected to be equal to working area width, may be any positive val\n" + "SPIRAL_SIDES_INTERVAL = {False:333, True:2000} \n" + "FIELD_REDUCE_SIZE = 200 # cut field's each side for this value, mms\n" + "PREV_CUR_POINT_MIN_DIST = 100 # pass by cur points dist between them and prev point is lesser than this, mms\n" + "FILTER_MAX_DIST = 5000 # maximum allowable distance between consecutive points (in millimeters)\n" + "FILTER_MIN_DIST = 600 # minimum allowable distance between consecutive points (in millimeters)\n" + "USE_EMERGENCY_FIELD_GENERATION = False # allows to generate field by moving forward for a given duration\n" + "EMERGENCY_FIELD_SIZE = 45000 # mms; side of the area that will be created if emergency field creation is enabled\n" + "EMERGENCY_MOVING_TIME = 10 # seconds of moving forward for vector getting\n" + "CONTINUE_PREVIOUS_PATH = False\n" + "PREVIOUS_PATH_POINTS_FILE = \"path_points.dat\"\n" + "PREVIOUS_PATH_INDEX_FILE = \"path_index.txt\"\n" + "FAR_TARGET_THRESHOLD = {-2500:25000 ,0:25000, -10000:25000} # the output of the KP KI is boost if the target is far than this threshold\n" + "FAR_TARGET_GAIN = {-2500:1.15 ,0:1.15, -10000:1.15} # the output of the KP KI is boost by this muliplier if the target is far than the threshold\n" + "CLOSE_TARGET_THRESHOLD = {-2500:5000 ,0:5000, -10000:5000} # the output of the KP KI is managed if the target is less than this threshold\n" + "SMALL_RAW_ANGLE_SQUARE_THRESHOLD = {-2500:100 ,0:100, -10000:100} # the output of the KP KI is calm by a muliplier if the raw angle is less than the threshold\n" + "SMALL_RAW_ANGLE_SQUARE_GAIN = {-2500:0.9 ,0:0.9, -10000:1} # the output of the KP KI is calm by this muliplier if the raw angle is less than the threshold\n" + "BIG_RAW_ANGLE_SQUARE_THRESHOLD = {-2500:625 ,0:625, -10000:625} # the output of the KP KI is boost by a muliplier if the raw angle is more than the threshold\n" + "BIG_RAW_ANGLE_SQUARE_GAIN = {-2500:1.35 ,0:1.35, -10000:1.35} # the output of the KP KI is boost by this muliplier if the raw angle is more than the threshold\n" + "#OPEN_LOOP_TF_AMPLITUDES = [5, 5, 5*12/14, 5*12/17, 5*12/20, 5*12/23] # 2500 Sinus angle range when the servo system is in open loop\n" + "OPEN_LOOP_TF_AMPLITUDES = [5*9/9, 5*9/13, 5*9/24, 5*9/28, 5*9/34, 5*9/40] # 10000 Sinus angle range when the servo system is in open loop\n" + "OPEN_LOOP_TF_MAX_SAMPLES = [5, 7, 10, 15, 20, 40] #Sinus sampling range when the servo system is in open loop\n" + "OPEN_LOOP_TF_FREQUENCIES = [1/5, 1/7, 1/10, 1/15, 1/20, 1/40] # Sinus frequency range when the servo system is in open loop\n" + "OPEN_LOOP_FLAT = 9 # waiting time between two stimuli\n" + "OPEN_LOOP_TF_MODE = True # mode enable a sinus angle drive on the robot \n" + "STRAIGHT_DIRECTION_INTEGRAL_DURATION = 10\n" + "ORIGIN_AVERAGE_SAMPLES = 5\n" + "GPS_CLOCK_JITTER = 0.050\n" + "PURSUIT_LIMIT = 3000 # length given in mm : at -2500rpm the deviation get correct after 3 meter path\n\n" + "# ======================================================================================================================\n" + "# EXTRACTION SETTINGS\n" + "# ======================================================================================================================\n" + "EXTRACTION_DEFAULT_METHOD = \"single_center_drop\" # or \"five_drops_near_center\"\n" + "ADDITIONAL_EXTRACTIONS_DISTANCE_X = 25 # mm\n" + "ADDITIONAL_EXTRACTIONS_DISTANCE_Y = 30 # mm\n" + "AVOID_CORK_VIEW_OBSCURING = True # is True: adds offsets to control points to make a plant to be at the top half of the undistorted zone\n" + "DISTANCE_FROM_UNDIST_BORDER = 100 # pixels; the corkscrew will move so that the plant is at this distance from the upper border of undistorted zone if AVOID_CORK_VIEW_OBSCURING is True\n" + "EXTRACTIONS_FULL_CYCLES = 2 # count of full extraction loops called after periphery NN detection (should be >= 1)\n" + "SEEK_DELTA_DISTANCE = 25 # mm; if weed is lost after tuning/getting closer - we do 3 shifts for that value (down, left, right) and trying to find it\n\n\n" + "# ======================================================================================================================\n" + "# PATHS SETTINGS\n" + "# ======================================================================================================================\n" + "INPUT_GPS_FIELD_FILE = \"field.txt\"\n" + "OUTPUT_GPS_HISTORY_FILE = \"gps_history.txt\"\n" + "DARKNET_LIB_DIR_PATH = \"/home/violette/field/darknet/\"\n\n" + "# ======================================================================================================================\n" + "# VESC SETTINGS\n" + "# ======================================================================================================================\n" + "VESC_PORT = \"/dev/ttyACM0\"\n" + "VESC_BAUDRATE = 115200\n" + "VESC_RPM_UI = -11500\n" + "VESC_RPM_SLOW = -2500\n" + "VESC_RPM_FAST = -10000\n" + "VESC_RPM_AUDIT = -10000\n" + "VESC_MOVING_TIME = float(\"inf\")\n" + "VESC_ALIVE_FREQ = 0.5 # freq of sending \"keep working\" signal to engines when moving\n" + "VESC_CHECK_FREQ = 0.001 # freq of checking need to stop\n" + "STEP_FORWARD_TIME = 0.8 # step after extraction loops are done\n" + "STEP_FORWARD_RPM = 0#-2000 # # step after extraction loops are done #-2500 à remettre\n" + "FAST_TO_SLOW_RPM = 2500\n" + "FAST_TO_SLOW_TIME = 5\n\n\n" + "# ======================================================================================================================\n" + "# GPS SETTINGS\n" + "# ======================================================================================================================\n" + "GPS_PORT = \"/dev/ttyTHS1\"\n" + "GPS_BAUDRATE = 19200\n" + "GPS_POSITIONS_TO_KEEP = 1000\n" + "NO_GPS_TIMEOUT = 10\n" + "GPS_CHECK_IN_DEGRADED_MODE = 30 #Check if gps returned every GPS_CHECK_IN_DEGRADED_MODE navigation cycle.\n\n" + "# ======================================================================================================================\n" + "# SMOOTHIE SETTINGS\n" + "# ======================================================================================================================\n" + "SMOOTHIE_HOST = \"/dev/ttyACM1\" # smoothie's ip address for telnet or port for usb serial connector\n" + "SMOOTHIE_BAUDRATE = 115200\n" + "SMOOTHIE_BACKEND = 2 # 1 = telnet, 2 = serial\n\n" + "# EXTRACTION\n" + "X_MIN = 0\n" + "X_MAX = 430\n" + "Y_MIN = 0\n" + "Y_MAX = 220\n" + "Z_MIN = -float(\"inf\")\n" + "Z_MAX = 100\n\n" + "XY_F_MIN = 1\n" + "XY_F_MAX = 8000 \n" + "Z_F_MIN = 1\n" + "Z_F_MAX = 2000 \n\n" + "XY_COEFFICIENT_TO_MM = 1\n" + "Z_COEFFICIENT_TO_MM = 1 # not used yet\n\n" + "EXTRACTION_Z = 10 #65 # value that passed to smoothie when doing plant extration\n" + "Z_F_EXTRACTION_UP = 1550 # 1350\n" + "Z_F_EXTRACTION_DOWN = 1900\n" + "ALLOW_PRECISE_RESCAN = True \n\n" + "# CALIBRATION\n" + "USE_X_AXIS_CALIBRATION = True\n" + "USE_Y_AXIS_CALIBRATION = True\n" + "USE_Z_AXIS_CALIBRATION = True\n" + "USE_A_AXIS_CALIBRATION = False\n" + "USE_B_AXIS_CALIBRATION = False\n" + "USE_C_AXIS_CALIBRATION = False\n\n" + "X_AXIS_CALIBRATION_TO_MAX = False\n" + "Y_AXIS_CALIBRATION_TO_MAX = False\n" + "Z_AXIS_CALIBRATION_TO_MAX = False \n" + "A_AXIS_CALIBRATION_TO_MAX = None\n" + "B_AXIS_CALIBRATION_TO_MAX = None\n" + "C_AXIS_CALIBRATION_TO_MAX = None\n\n" + "CALIBRATION_DISTANCE = 1000 # should be always positive, sign will be auto-defined using *_AXIS_CALIBRATION_TO_MAX flag key\n" + "AFTER_CALIBRATION_AXIS_OFFSET = 0\n\n" + "# NAVIGATION\n" + "A_MIN = -9 #-38/6\n" + "A_MAX = 9 #38/6\n" + "B_MIN = -float(\"inf\")\n" + "B_MAX = float(\"inf\")\n" + "C_MIN = -float(\"inf\")\n" + "C_MAX = float(\"inf\")\n\n" + "A_F_MIN = 1\n" + "A_F_MAX = 4000\n" + "A_F_UI = 1000\n" + "B_F_MIN = 1\n" + "B_F_MAX = 4000\n" + "C_F_MIN = 1\n" + "C_F_MAX = 1000\n\n" + "A_ONE_DEGREE_IN_SMOOTHIE = 2 # A axis\n" + "A_DEGREES_PER_SECOND = 5 # A axis\n" + "NAV_TURN_WHEELS_CENTER = 0\n\n\n" + "# ======================================================================================================================\n" + "# YOLO PERIPHERY NETWORK SETTINGS\n" + "# ======================================================================================================================\n" + "PERIPHERY_CONFIDENCE_THRESHOLD = 0.1\n" + "PERIPHERY_HIER_THRESHOLD = 0.5\n" + "PERIPHERY_NMS_THRESHOLD = 0.4\n" + "PERIPHERY_INPUT_SIZE = (416, 416)\n" + "PERIPHERY_CONFIG_FILE = \"yolo/Y0016_416.cfg\"\n" + "PERIPHERY_WEIGHTS_FILE = \"yolo/Y0016.weights\"\n" + "PERIPHERY_CLASSES_FILE = \"yolo/Y0016.names\"\n" + "PERIPHERY_DNN_BACKEND = 5\n" + "PERIPHERY_DNN_TARGET = 6\n" + "PERIPHERY_WRAPPER = 1\n" + "PERIPHERY_DATA_FILE = \"yolo/Y0014.data\"\n\n" + "# ======================================================================================================================\n" + "# YOLO PRECISE NETWORK SETTINGS\n" + "# ======================================================================================================================\n" + "PRECISE_CONFIDENCE_THRESHOLD = 0.1\n" + "PRECISE_HIER_THRESHOLD = 0.5\n" + "PRECISE_NMS_THRESHOLD = 0.4\n" + "PRECISE_INPUT_SIZE = (832, 832)\n" + "PRECISE_CONFIG_FILE = \"yolo/Y0016_832.cfg\"\n" + "PRECISE_WEIGHTS_FILE = \"yolo/Y0016.weights\"\n" + "PRECISE_CLASSES_FILE = \"yolo/Y0016.names\"\n" + "PRECISE_DATA_FILE = \"yolo/Y0014.data\"\n" + "PRECISE_DNN_BACKEND = 5\n" + "PRECISE_DNN_TARGET = 6\n" + "PRECISE_WRAPPER = 1\n\n\n" + "# ======================================================================================================================\n" + "# CAMERA SETTINGS\n" + "# ======================================================================================================================\n" + "CAMERA_W = 3280\n" + "CAMERA_H = 2464\n" + "APPLY_IMAGE_CROPPING = True \n" + "CROP_W_FROM = 684\n" + "CROP_W_TO = 2684\n" + "CROP_H_FROM = 368\n" + "CROP_H_TO = 1868\n" + "CAMERA_FRAMERATE = 6\n" + "CAMERA_FLIP_METHOD = 0\n" + "SCENE_CENTER_X = 1000 # 1684 for uncropped\n" + "SCENE_CENTER_Y = 980 # 1348 for uncropped\n" + "ONE_MM_IN_PX = 5.2\n" + "ISP_DIGITAL_GAIN_RANGE_FROM = 4\n" + "ISP_DIGITAL_GAIN_RANGE_TO = 4\n" + "GAIN_RANGE_FROM = 4\n" + "GAIN_RANGE_TO = 4\n" + "EXPOSURE_TIME_RANGE_FROM = 660000\n" + "EXPOSURE_TIME_RANGE_TO = 660000\n" + "AE_LOCK = True\n" + "CV_APPLY_ROTATION = False\n" + "CV_ROTATE_CODE = 2\n" + "APPLY_THREAD_BUFF_CLEANING = True\n" + "BUFF_CLEANING_DELAY = 0 # seconds of waiting before frame reading; should be positive or zero; set to 0 if thread cleaning is used\n" + "VIEW_ZONE_POLY_POINTS = [[387, 618], [439, 510], [556, 433], [670, 375], [808, 319], [982, 285], [1143, 279], [1293, 294], [1501, 339], [1635, 395], [1766, 473], [1816, 550], [1867, 637], [1881, 675], [1919, 795], [1942, 926], [1959, 1066], [1964, 1217], [1957, 1321], [1949, 1393], [1874, 1425], [1802, 1457], [1692, 1498], [1555, 1537], [1410, 1567], [1219, 1589], [1081, 1590], [944, 1590], [804, 1575], [679, 1552], [569, 1525], [423, 1475], [330, 1431], [277, 1399], [273, 1289], [279, 1131], [297, 976], [343, 780]]\n" + "WORKING_ZONE_UNCROPPED_POLY_POINTS = [[1684, 1513], [914, 1448], [929, 1123], [1024, 768], [1324, 683], [1684, 638], [2044, 683], [2344, 768], [2439, 1123], [2454, 1448]]\n" + "#WORKING_OLD_ZONE_POLY_POINTS = [[232, 1105], [231, 942], [243, 781], [271, 648], [338, 455], [450, 399], [569, 355], [726, 314], [870, 295], [996, 289], [1128, 297], [1251, 316], [1383, 351], [1530, 406], [1621, 444], [1663, 552], [1690, 648], [1713, 762], [1727, 863], [1732, 944], [1731, 1086], [1588, 1104], [1418, 1117], [1230, 1130], [1097, 1133], [683, 1136], [397, 1118], [232, 1104]]\n" + "IMAGE_CONTROL_POINTS_MAP = [[981, 995, 0, 0, 1], [876, 996, -20, 0, 2], [778, 998, -40, 0, 3], [686, 998, -60, 0, 4], [601, 1000, -80, 0, 5], [524, 1001, -100, 0, 6], [460, 1002, -120, 0, 7], [400, 1006, -140, 0, 8], [348, 1009, -160, 0, 9], [305, 1007, -180, 0, 10], [270, 1008, -200, 0, 11], [980, 892, 0, 20, 12], [877, 893, -20, 20, 13], [776, 895, -40, 20, 14], [683, 900, -60, 20, 15], [599, 906, -80, 20, 16], [521, 912, -100, 20, 17], [456, 916, -120, 20, 18], [397, 923, -140, 20, 19], [348, 929, -160, 20, 20], [305, 932, -180, 20, 21], [269, 936, -200, 20, 22], [979, 791, 0, 40, 23], [876, 792, -20, 40, 24], [779, 798, -40, 40, 25], [685, 805, -60, 40, 26], [602, 812, -80, 40, 27], [524, 821, -100, 40, 28], [458, 832, -120, 40, 29], [401, 841, -140, 40, 30], [349, 851, -160, 40, 31], [308, 860, -180, 40, 32], [269, 867, -200, 40, 33], [978, 697, 0, 60, 34], [878, 700, -20, 60, 35], [783, 706, -40, 60, 36], [691, 713, -60, 60, 37], [607, 725, -80, 60, 38], [534, 737, -100, 60, 39], [467, 749, -120, 60, 40], [409, 763, -140, 60, 41], [359, 774, -160, 60, 42], [315, 787, -180, 60, 43], [279, 798, -200, 60, 44], [977, 612, 0, 80, 45], [881, 616, -20, 80, 46], [788, 622, -40, 80, 47], [700, 633, -60, 80, 48], [619, 644, -80, 80, 49], [544, 658, -100, 80, 50], [480, 674, -120, 80, 51], [422, 690, -140, 80, 52], [371, 703, -160, 80, 53], [326, 719, -180, 80, 54], [285, 734, -200, 80, 55], [976, 538, 0, 100, 56], [885, 541, -20, 100, 57], [793, 547, -40, 100, 58], [711, 558, -60, 100, 59], [630, 572, -80, 100, 60], [559, 586, -100, 100, 61], [494, 602, -120, 100, 62], [435, 620, -140, 100, 63], [384, 638, -160, 100, 64], [338, 657, -180, 100, 65], [301, 672, -200, 100, 66], [976, 472, 0, 120, 67], [887, 475, -20, 120, 68], [801, 481, -40, 120, 69], [720, 491, -60, 120, 70], [642, 505, -80, 120, 71], [573, 521, -100, 120, 72], [509, 537, -120, 120, 73], [450, 556, -140, 120, 74], [400, 576, -160, 120, 75], [355, 596, -180, 120, 76], [313, 614, -200, 120, 77], [976, 414, 0, 140, 78], [892, 415, -20, 140, 79], [810, 422, -40, 140, 80], [730, 432, -60, 140, 81], [657, 446, -80, 140, 82], [585, 462, -100, 140, 83], [525, 480, -120, 140, 84], [467, 500, -140, 140, 85], [416, 520, -160, 140, 86], [366, 541, -180, 140, 87], [329, 558, -200, 140, 88], [975, 362, 0, 160, 89], [894, 364, -20, 160, 90], [818, 371, -40, 160, 91], [742, 381, -60, 160, 92], [668, 396, -80, 160, 93], [601, 411, -100, 160, 94], [539, 432, -120, 160, 95], [485, 450, -140, 160, 96], [435, 469, -160, 160, 97], [386, 495, -180, 160, 98], [344, 512, -200, 160, 99], [974, 320, 0, 180, 100], [899, 321, -20, 180, 101], [824, 330, -40, 180, 102], [752, 338, -60, 180, 103], [683, 351, -80, 180, 104], [619, 367, -100, 180, 105], [557, 386, -120, 180, 106], [505, 405, -140, 180, 107], [455, 424, -160, 180, 108], [408, 444, -180, 180, 109], [367, 461, -200, 180, 110], [1083, 994, 20, 0, 111], [1180, 992, 40, 0, 112], [1275, 992, 60, 0, 113], [1357, 991, 80, 0, 114], [1434, 990, 100, 0, 115], [1500, 990, 120, 0, 116], [1559, 992, 140, 0, 117], [1609, 994, 160, 0, 118], [1652, 993, 180, 0, 119], [1691, 995, 200, 0, 120], [1082, 891, 20, 20, 121], [1181, 893, 40, 20, 122], [1273, 895, 60, 20, 123], [1358, 898, 80, 20, 124], [1434, 901, 100, 20, 125], [1500, 907, 120, 20, 126], [1559, 912, 140, 20, 127], [1608, 916, 160, 20, 128], [1651, 920, 180, 20, 129], [1691, 923, 200, 20, 130], [1078, 791, 20, 40, 131], [1178, 795, 40, 40, 132], [1268, 800, 60, 40, 133], [1352, 808, 80, 40, 134], [1427, 814, 100, 40, 135], [1495, 823, 120, 40, 136], [1552, 830, 140, 40, 137], [1603, 839, 160, 40, 138], [1646, 846, 180, 40, 139], [1686, 854, 200, 40, 140], [1077, 698, 20, 60, 141], [1173, 702, 40, 60, 142], [1264, 710, 60, 60, 143], [1344, 721, 80, 60, 144], [1419, 731, 100, 60, 145], [1483, 741, 120, 60, 146], [1543, 754, 140, 60, 147], [1593, 766, 160, 60, 148], [1639, 775, 180, 60, 149], [1677, 785, 200, 60, 150], [1072, 612, 20, 80, 151], [1168, 619, 40, 80, 152], [1254, 628, 60, 80, 153], [1335, 639, 80, 80, 154], [1407, 655, 100, 80, 155], [1473, 668, 120, 80, 156], [1530, 681, 140, 80, 157], [1580, 694, 160, 80, 158], [1627, 710, 180, 80, 159], [1666, 723, 200, 80, 160], [1068, 540, 20, 100, 161], [1159, 545, 40, 100, 162], [1244, 552, 60, 100, 163], [1322, 566, 80, 100, 164], [1393, 580, 100, 100, 165], [1457, 597, 120, 100, 166], [1516, 612, 140, 100, 167], [1568, 628, 160, 100, 168], [1612, 644, 180, 100, 169], [1652, 661, 200, 100, 170], [1064, 474, 20, 120, 171], [1149, 479, 40, 120, 172], [1231, 487, 60, 120, 173], [1308, 500, 80, 120, 174], [1380, 515, 100, 120, 175], [1444, 533, 120, 120, 176], [1502, 549, 140, 120, 177], [1552, 567, 160, 120, 178], [1597, 586, 180, 120, 179], [1634, 600, 200, 120, 180], [1059, 413, 20, 140, 181], [1141, 420, 40, 140, 182], [1220, 429, 60, 140, 183], [1295, 442, 80, 140, 184], [1364, 458, 100, 140, 185], [1426, 474, 120, 140, 186], [1482, 491, 140, 140, 187], [1533, 509, 160, 140, 188], [1579, 531, 180, 140, 189], [1617, 544, 200, 140, 190], [1055, 364, 20, 160, 191], [1133, 369, 40, 160, 192], [1208, 380, 60, 160, 193], [1280, 393, 80, 160, 194], [1346, 409, 100, 160, 195], [1407, 424, 120, 160, 196], [1466, 443, 140, 160, 197], [1522, 462, 160, 160, 198], [1563, 479, 180, 160, 199], [1603, 496, 200, 160, 200], [1050, 319, 20, 180, 201], [1126, 328, 40, 180, 202], [1199, 340, 60, 180, 203], [1266, 348, 80, 180, 204], [1329, 363, 100, 180, 205], [1393, 379, 120, 180, 206], [1448, 397, 140, 180, 207], [1507, 416, 160, 180, 208], [1548, 430, 180, 180, 209], [1584, 446, 200, 180, 210]]\n" + "UNDISTORTED_ZONE_RADIUS = 240\n" + "WORKING_ZONE_POLY_POINTS = [[1000, 1145], [230, 1080], [245, 755], [340, 400], [640, 315], [1000, 270], [1360, 315], [1660, 400], [1755, 755], [1770, 1080]]\n\n" + "# ======================================================================================================================\n" + "# APP SETTINGS\n" + "# ======================================================================================================================\n" + "SAVE_DEBUG_IMAGES = True\n" + "DEBUG_IMAGES_PATH = \"debug_images/\"\n" + "ALLOW_GATHERING = False\n" + "FILES_TO_KEEP_COUNT = 600\n" + "RECEIVE_FIELD_FROM_RTK = False\n" + "EXTRACTION_TUNING_MAX_COUNT = 3\n" + "DELAY_BEFORE_2ND_SCAN = 0.3 # delay in seconds after robot stop and before second scan (M=1)\n" + "DB_NAME = \"dbname\"\n" + "DB_USER = \"username\"\n" + "DB_HOST = \"x.x.x.x\"\n" + "DB_PWD = \"password\"\n" + "ROBOT_SN = \"SN007\"\n" + "UI_LANGUAGE = \"fr\"\n" + "AUDIT_MODE = False\n" + "AUDIT_DIVIDER = 6\n" + "SLOW_FAST_MODE = False\n" + "SLOW_MODE_MIN_TIME = 3 # seconds\n" + "AUDIT_OUTPUT_FILE = \"audit.txt\"\n" + "LOG_ROOT_DIR = \"logs/\"\n" + "STATISTICS_OUTPUT_FILE = \"statistics.txt\"\n" + "DATA_GATHERING_DIR = \"gathered_data/\"\n" + "CORK_CALIBRATION_MIN_TIME = 360000\n" + "QUEUE_NAME_UI_MAIN = \"/queue_ui_main\"\n" + "QUEUE_NAME_UI_NOTIFICATION = \"/queue_ui_notification\"\n" + "ALLOW_DETECT_AND_EXTRACT_GROUP = False\n" + "VERBOSE = True\n" + "MYOPIA_PATCH = True\n" + "CONTINUOUS_INFORMATION_SENDING = True\n" + "ALIVE_SENDING_TIMEOUT = 1\n" + "LAST_ANGLE_WHEELS_FILE = \"last_angle_wheels.txt\"\n" + "FRAME_SHOW = True\n" + "SHARED_MEMORY_NAME_DETECTED_FRAME = \"/detected_frame\"\n" + "TWO_POINTS_FOR_CREATE_FIELD = False\n\n" + "# ======================================================================================================================\n" + "# MATRIX SETTINGS\n" + "# ======================================================================================================================\n" + "#DETECTION\n" + "MATRIX_PLANT_ROOT = 1\n" + "MATRIX_PLANT_LEAF = 2 # All leaft will be number greater than this parameter (2 = one leaft, 3 = two leaft, ...)\n" + "GROUP_THRESHOLD = 3\n" + "#EXTRACTION\n" + "MATRIX_EXTRACTION = 1\n" + "MATRIX_EXTRACTION_PATTERN = 2 # All different pattern will be number greater than this parameter (2 = pattern one in ExtractionMethods, 3 = pattern two in ExtractionMethods, ...)\n" + "#ALL\n" + "MATRIX_ONE_MATRICE_CELL_IN_MM = 10\n" + "OFFSET_FOR_MATRIX_BORDER_IN_CELL = 5\n" + "OFFSET_FOR_MATRIX_PATTERN_IN_MM = 10 # 20 for corkscrew\n" + "DEBUG_MATRIX_FILE = False\n" + "ALLOW_DETECT_AND_EXTRACT_GROUP = False\n\n" + "# ======================================================================================================================\n" + "# OLD PATHS\n" + "# ======================================================================================================================\n" + "QUERY_IMAGE_PATH = \"input\\\\prise8.jpg\"\n" + "OUTPUT_IMAGE_DIR = \"output\\\\\"\n" + "OUTPUT_IMAGE_NAME = \"prise2 - AOI\"\n" + "OUTPUT_IMAGE_EXTENSION = \".jpg\"\n\n" + "# ======================================================================================================================\n" + "# NTRIP CLIENT SETTINGS\n" + "# ======================================================================================================================\n" + "NTRIP = False \n" + "NTRIP_RESTART_TIMEOUT = 60\n" + "NTRIP_USER = \"centipede\"\n" + "NTRIP_PASSWORD = \"centipede\"\n" + "NTRIP_CASTER = \"caster.centipede.fr\"\n" + "NTRIP_PORT = 2101\n" + "NTRIP_MOUNTPOINT = \"LIENSS\"\n\n" + "NTRIP_OUTPUT_PORT = \"/dev/ttyACM1\"\n" + "NTRIP_OUTPUT_BAUDRATE = 38400\n\n" + "# ======================================================================================================================\n" + "# PREDICTION SETTINGS\n" + "# ======================================================================================================================\n" + "ZONE_THRESHOLD_DEGREE = {436:5,697:7,796:17,849:15,953:6}\n"; final String subst = "\\1 = \"new_var\" \\3"; final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE); final Matcher matcher = pattern.matcher(string); // The substituted value will be contained in the result variable final String result = matcher.replaceAll(subst); System.out.println("Substitution result: " + 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 Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html