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

$re = '/^\[SF_KAFKA_CONNECTOR\] (?<message>.*) \((?<code_reference>[^ ]*)\)$/m'; $str = '[SF_KAFKA_CONNECTOR] deleted sink/account_entitlements_staging/0/22446382_22446393_1585089396398.json.gz from stage SNOWFLAKE_KAFKA_CONNECTOR_sink_STAGE_account_entitlements_staging (com.snowflake.kafka.connector.internal.SnowflakeConnectionServiceV1:95) [SF_KAFKA_CONNECTOR] purge 2 files from stage: SNOWFLAKE_KAFKA_CONNECTOR_sink_STAGE_account_entitlements_staging (com.snowflake.kafka.connector.internal.SnowflakeConnectionServiceV1:79) [SF_KAFKA_CONNECTOR] generated file name: sink/account_entitlements_staging/0/22446400_22446402_1585089458654.json.gz (com.snowflake.kafka.connector.internal.FileNameUtils:45) [SF_KAFKA_CONNECTOR] flush buffer: 3 records, 35866 bytes, offset 22446400 - 22446402 (com.snowflake.kafka.connector.internal.SnowflakeSinkServiceV1:95) [SF_KAFKA_CONNECTOR] put file sink/account_entitlements_staging/0/22446400_22446402_1585089458654.json.gz to stage SNOWFLAKE_KAFKA_CONNECTOR_sink_STAGE_account_entitlements_staging (com.snowflake.kafka.connector.internal.SnowflakeConnectionServiceV1:95) [SF_KAFKA_CONNECTOR] ingest file: sink/account_entitlements_staging/0/22446400_22446402_1585089458654.json.gz (com.snowflake.kafka.connector.internal.SnowflakeIngestionServiceV1:95) [SF_KAFKA_CONNECTOR] pipe SNOWFLAKE_KAFKA_CONNECTOR_sink_PIPE_account_entitlements_staging_0, flush pipe: sink/account_entitlements_staging/0/22446400_22446402_1585089458654.json.gz (com.snowflake.kafka.connector.internal.SnowflakeSinkServiceV1:79) [SF_KAFKA_CONNECTOR] pipe SNOWFLAKE_KAFKA_CONNECTOR_sink_PIPE_account_entitlements_staging_0: flusher flushed (com.snowflake.kafka.connector.internal.SnowflakeSinkServiceV1:95) [SF_KAFKA_CONNECTOR] generated file name: sink/account_entitlements_staging/0/22446403_22446411_1585089489491.json.gz (com.snowflake.kafka.connector.internal.FileNameUtils:45) [SF_KAFKA_CONNECTOR] flush buffer: 9 records, 94748 bytes, offset 22446403 - 22446411 (com.snowflake.kafka.connector.internal.SnowflakeSinkServiceV1:95) [SF_KAFKA_CONNECTOR] put file sink/account_entitlements_staging/0/22446403_22446411_1585089489491.json.gz to stage [2020-03-25 02:19:06,168] INFO [Consumer clientId=connector-consumer-sink-0, groupId=connect-sink] Cluster ID: l8tlDKPoQn25uMmLW2-taw (org.apache.kafka.clients.Metadata:266) [2020-03-25 02:19:06,170] INFO [Consumer clientId=connector-consumer-sink-0, groupId=connect-sink] Discovered group coordinator chi-staging-kafka-872s9z2.nr-ops.net:9092 (id: 2147483541 rack: null) (org.apache.kafka.clients.consumer.internals.AbstractCoordinator:728) [2020-03-25 02:19:06,173] INFO [Consumer clientId=connector-consumer-sink-0, groupId=connect-sink] Revoking previously assigned partitions [] (org.apache.kafka.clients.consumer.internals.ConsumerCoordinator:476) [2020-03-25 02:19:06,176] INFO [Consumer clientId=connector-consumer-sink-0, groupId=connect-sink] (Re-)joining group (org.apache.kafka.clients.consumer.internals.AbstractCoordinator:505) [2020-03-25 02:19:07,291] INFO [Consumer clientId=connector-consumer-sink-0, groupId=connect-sink] Successfully joined group with generation 105 (org.apache.kafka.clients.consumer.internals.AbstractCoordinator:469) [2020-03-25 02:19:07,297] INFO [Consumer clientId=connector-consumer-sink-0, groupId=connect-sink] Setting newly assigned partitions: account_entitlements-0 (org.apache.kafka.clients.consumer.internals.ConsumerCoordinator:283) [2020-03-25 02:19:07,379] INFO [Consumer clientId=connector-consumer-sink-0, groupId=connect-sink] Setting offset for partition account_entitlements-0 to the committed offset FetchPosition{offset=22447142, offsetEpoch=Optional.empty, currentLeader=LeaderAndEpoch{leader=chi-staging-kafka-jv8xnx2.nr-ops.net:9092 (id: 4 rack: ord1), epoch=-1}} (org.apache.kafka.clients.consumer.internals.ConsumerCoordinator:525) [2020-03-25 02:19:07,381] INFO [SF_KAFKA_CONNECTOR] SnowflakeSinkTask[ID:0]:open, TopicPartitions: [account_entitlements-0] (com.snowflake.kafka.connector.SnowflakeSinkTask:170) [2020-03-25 02:19:08,058] INFO [SF_KAFKA_CONNECTOR] initialized the pipe connector for pipe RAW.KAFKA.SNOWFLAKE_KAFKA_CONNECTOR_sink_PIPE_account_entitlements_staging_0 (com.snowflake.kafka.connector.internal.SnowflakeIngestionServiceV1:79) [2020-03-25 02:19:08,060] INFO [SF_KAFKA_CONNECTOR] pipe: SNOWFLAKE_KAFKA_CONNECTOR_sink_PIPE_account_entitlements_staging_0 - service started (com.snowflake.kafka.connector.internal.SnowflakeSinkServiceV1:79) [2020-03-25 02:19:08,962] INFO [SF_KAFKA_CONNECTOR] SnowflakeSinkTask[ID:0]:put 209 records (com.snowflake.kafka.connector.SnowflakeSinkTask:205) [2020-03-25 02:19:08,964] INFO [SF_KAFKA_CONNECTOR] init pipe: SNOWFLAKE_KAFKA_CONNECTOR_sink_PIPE_account_entitlements_staging_0 (com.snowflake.kafka.connector.internal.SnowflakeSinkServiceV1:79) [2020-03-25 02:19:09,552] INFO [SF_KAFKA_CONNECTOR] Using existing table account_entitlements_staging. (com.snowflake.kafka.connector.internal.SnowflakeSinkServiceV1:79) [2020-03-25 02:19:10,094] INFO [SF_KAFKA_CONNECTOR] list stage SNOWFLAKE_KAFKA_CONNECTOR_sink_STAGE_account_entitlements_staging retrieved 1 file names (com.snowflake.kafka.connector.internal.SnowflakeConnectionServiceV1:79) [2020-03-25 02:19:10,094] INFO [SF_KAFKA_CONNECTOR] Using existing stage SNOWFLAKE_KAFKA_CONNECTOR_sink_STAGE_account_entitlements_staging. (com.snowflake.kafka.connector.internal.SnowflakeSinkServiceV1:79) [2020-03-25 02:19:10,786] INFO [SF_KAFKA_CONNECTOR] list stage SNOWFLAKE_KAFKA_CONNECTOR_sink_STAGE_account_entitlements_staging retrieved 1 file names (com.snowflake.kafka.connector.internal.SnowflakeConnectionServiceV1:79) [2020-03-25 02:19:11,551] INFO [SF_KAFKA_CONNECTOR] read load history between 2020-03-25T02:10:14Z and 2020-03-25T02:19:10Z. retrieved 0 records. (com.snowflake.kafka.connector.internal.SnowflakeIngestionServiceV1:79) [2020-03-25 02:19:11,909] INFO [SF_KAFKA_CONNECTOR] pipe SNOWFLAKE_KAFKA_CONNECTOR_sink_PIPE_account_entitlements_staging_0 : Recovered 1 files (com.snowflake.kafka.connector.internal.SnowflakeSinkServiceV1:79) [2020-03-25 02:19:11,910] INFO [SF_KAFKA_CONNECTOR] pipe SNOWFLAKE_KAFKA_CONNECTOR_sink_PIPE_account_entitlements_staging_0, recovered from existing pipe (com.snowflake.kafka.connector.internal.SnowflakeSinkServiceV1:79) [2020-03-25 02:19:11,912] INFO [SF_KAFKA_CONNECTOR] pipe SNOWFLAKE_KAFKA_CONNECTOR_sink_PIPE_account_entitlements_staging_0: cleaner started (com.snowflake.kafka.connector.internal.SnowflakeSinkServiceV1:79) [2020-03-25 02:19:11,914] INFO [SF_KAFKA_CONNECTOR] pipe SNOWFLAKE_KAFKA_CONNECTOR_sink_PIPE_account_entitlements_staging_0: flusher started (com.snowflake.kafka.connector.internal.SnowflakeSinkServiceV1:79) [2020-03-25 02:19:11,918] INFO [SF_KAFKA_CONNECTOR] SnowflakeSinkTask[ID:0]:put 9 records (com.snowflake.kafka.connector.SnowflakeSinkTask:205) [2020-03-25 02:19:12,211] INFO [SF_KAFKA_CONNECTOR] SnowflakeSinkTask[ID:0]:put 0 records (com.snowflake.kafka.connector.SnowflakeSinkTask:205) [2020-03-25 02:19:12,212] INFO WorkerSinkTask{id=sink-0} Committing offsets asynchronously using sequence number 1: {account_entitlements-0=OffsetAndMetadata{offset=22447143, leaderEpoch=null, metadata=\'\'}} (org.apache.kafka.connect.runtime.WorkerSinkTask:345) [2020-03-25 02:19:22,221] INFO [SF_KAFKA_CONNECTOR] SnowflakeSinkTask[ID:0]:put 0 records (com.snowflake.kafka.connector.SnowflakeSinkTask:205) [2020-03-25 02:19:32,223] INFO [SF_KAFKA_CONNECTOR] SnowflakeSinkTask[ID:0]:put 0 records (com.snowflake.kafka.connector.SnowflakeSinkTask:205) [2020-03-25 02:19:42,224] INFO [SF_KAFKA_CONNECTOR] SnowflakeSinkTask[ID:0]:put 0 records (com.snowflake.kafka.connector.SnowflakeSinkTask:205) [2020-03-25 02:19:44,386] INFO [SF_KAFKA_CONNECTOR] pipe SNOWFLAKE_KAFKA_CONNECTOR_sink_PIPE_account_entitlements_staging_0, flush pipe: sink/account_entitlements_staging/0/22447346_22447359_1585102781881.json.gz (com.snowflake.kafka.connector.internal.SnowflakeSinkServiceV1:79)'; preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0); // Print the entire match result var_dump($matches);

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 PHP, please visit: http://php.net/manual/en/ref.pcre.php