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 = '/^(?<time>[^ ]*) +(?<source>[a-zA-Z0-9_\.\-]+) +(?<message>.*)$/m'; $str = '2025-01-16T04:47:56+00:00 kubernetes.var.log.containers.calico-kube-controllers-6498fc5559-tq8fh_calico-system_calico-kube-controllers-6941547f6cf28781e8a6122aec75dcd8be32e96154ffb00b97737bfed78998fd.log {"time":"2025-01-16T04:47:56.305133654Z","stream":"stderr","logtag":"F","message":"2025-01-16 04:47:56.304 [INFO][1] kube-controllers/resources.go 350: Main client watcher loop","kubernetes":{"pod_name":"calico-kube-controllers-6498fc5559-tq8fh","namespace_name":"calico-system","pod_id":"196ccc62-3b25-4d29-ac86-85eb5273e11c","labels":{"app.kubernetes.io/name":"calico-kube-controllers","k8s-app":"calico-kube-controllers","pod-template-hash":"6498fc5559"},"annotations":{"cni.projectcalico.org/containerID":"a90a601cc7332f27016b4a07efc6df4cc482ce664dde09a9dee23bb8b2f0d34a","cni.projectcalico.org/podIP":"10.42.211.2/32","cni.projectcalico.org/podIPs":"10.42.211.2/32","hash.operator.tigera.io/system":"fdde45054a8ae4f629960ce37570929502e59449","tigera-operator.hash.operator.tigera.io/tigera-ca-private":"9ba523b2e7acde64ffe5d183e73ef45536584bff"},"host":"tj-rancheragent-rke2-all-0","container_name":"calico-kube-controllers","docker_id":"6941547f6cf28781e8a6122aec75dcd8be32e96154ffb00b97737bfed78998fd","container_hash":"docker.io/rancher/mirrored-calico-kube-controllers@sha256:5110098c326035c874cd95c2f722604bdd401f08d0b1a0f48d2b3872a3aea0f1","container_image":"docker.io/rancher/mirrored-calico-kube-controllers:v3.29.0"} 2025-01-16T04:37:39+00:00 kubernetes.var.log.containers.rancher-logging-7658cdbb86-28mr2_cattle-logging-system_rancher-logging-bd1b5b36565feed606ed34822d71d281d5fd20117abbb8f7ae7c3642b7392320.log {"time":"2025-01-16T04:37:39.821417693Z","stream":"stderr","logtag":"F","message":"{\\"level\\":\\"info\\",\\"ts\\":\\"2025-01-16T04:37:39Z\\",\\"logger\\":\\"logging\\",\\"msg\\":\\"processing NodeAgent CRDs is explicitly disabled (enable: ENABLE_NODEAGENT_CRD=1)\\",\\"logging\\":\\"rancher-logging-root\\"}","kubernetes":{"pod_name":"rancher-logging-7658cdbb86-28mr2","namespace_name":"cattle-logging-system","pod_id":"c840a62f-b87e-41e8-b85c-903d204f1661","labels":{"app.kubernetes.io/instance":"rancher-logging","app.kubernetes.io/name":"rancher-logging","pod-template-hash":"7658cdbb86"},"annotations":{"cni.projectcalico.org/containerID":"2f84a46ec8096d329c1119297a0942bb39e3e66b1a77adef82b6a27f44c01ef6","cni.projectcalico.org/podIP":"10.42.173.133/32","cni.projectcalico.org/podIPs":"10.42.173.133/32"},"host":"tj-rancheragent-rke2-worker-0","container_name":"rancher-logging","docker_id":"bd1b5b36565feed606ed34822d71d281d5fd20117abbb8f7ae7c3642b7392320","container_hash":"docker.io/rancher/mirrored-kube-logging-logging-operator@sha256:0f1712168a8d12eb30d1a58aba39c9bb88ebe2b3693b789203be6aba9f684db5","container_image":"docker.io/rancher/mirrored-kube-logging-logging-operator:4.8.0"}} 2025-01-16T04:36:49+00:00 kubernetes.var.log.containers.rancher-logging-rke2-journald-aggregator-7cmfp_cattle-logging-system_fluentbit-29b9c983bf60cc15a988b78ca05ba656b12706bcd306206d81d181c312bcf3c5.log {"time":"2025-01-16T04:36:49.753276353Z","stream":"stderr","logtag":"F","message":"[2025/01/16 04:36:49] [ info] [engine] flush chunk \'1-1737002199.468138.flb\' succeeded at retry 1: task_id=0, input=tail.1 > output=forward.0 (out_id=0)","kubernetes":{"pod_name":"rancher-logging-rke2-journald-aggregator-7cmfp","namespace_name":"cattle-logging-system","pod_id":"27ab46c1-3ae5-4035-893d-9a725c7ec714","labels":{"controller-revision-hash":"568b4f7866","name":"rancher-logging-rke2-journald-aggregator","pod-template-generation":"1"},"annotations":{"checksum/config":"695e737e399f4bbf1bf1834c99be4ac97bd388b31077e9b95c9f4cbbeef23d6f","cni.projectcalico.org/containerID":"1f92f16f656603b05c576c7a90333626205c69d618da902adb62cc7c718ccefa","cni.projectcalico.org/podIP":"10.42.211.22/32","cni.projectcalico.org/podIPs":"10.42.211.22/32"},"host":"tj-rancheragent-rke2-all-0","container_name":"fluentbit","docker_id":"29b9c983bf60cc15a988b78ca05ba656b12706bcd306206d81d181c312bcf3c5","container_hash":"docker.io/rancher/mirrored-fluent-fluent-bit@sha256:b87ed46fee46ee6ca59a7ee04973ba328248ca69c91954310dc65dcfce1508f4","container_image":"docker.io/rancher/mirrored-fluent-fluent-bit:3.0.4"}} 2025-01-16T04:36:53+00:00 kubernetes.var.log.containers.rancher-logging-root-fluentbit-gsm5q_cattle-logging-system_fluent-bit-b011f43847847873d0469b38c54d56581393b8d0f31b9e8a68f1e4e28768d38b.log {"time":"2025-01-16T04:36:53.735729237Z","stream":"stderr","logtag":"F","message":"[2025/01/16 04:36:53] [ info] [engine] flush chunk \'1-1737002203.732881197.flb\' succeeded at retry 1: task_id=4, input=tail.0 > output=forward.0 (out_id=0)","kubernetes":{"pod_name":"rancher-logging-root-fluentbit-gsm5q","namespace_name":"cattle-logging-system","pod_id":"fdfa84a4-e55a-4672-bc2d-def195f36276","labels":{"app.kubernetes.io/instance":"rancher-logging-root","app.kubernetes.io/managed-by":"rancher-logging-root","app.kubernetes.io/name":"fluentbit","controller-revision-hash":"5876fb99d7","pod-template-generation":"1"},"annotations":{"checksum/fluent-bit.conf":"d70f6ec6ac77fb32caf97eb0fe994b4663bbc346165d227d0b0c8d80947f8f59","cni.projectcalico.org/containerID":"cfdc072d613788cd8e6cf161e91e9129ef4b51f328e848a4e1968dffdf566be0","cni.projectcalico.org/podIP":"10.42.211.23/32","cni.projectcalico.org/podIPs":"10.42.211.23/32"},"host":"tj-rancheragent-rke2-all-0","container_name":"fluent-bit","docker_id":"b011f43847847873d0469b38c54d56581393b8d0f31b9e8a68f1e4e28768d38b","container_image":"rancher/mirrored-fluent-fluent-bit:3.0.4"}} 2025-01-16T05:36:22+00:00 kubernetes.var.log.containers.rke2-ingress-nginx-controller-xf7hc_kube-system_rke2-ingress-nginx-controller-427871614c79077e11e82d9dd3c250aecff8be44589b3cacb81abb243d0e0b92.log {"time":"2025-01-16T05:36:22.388147616Z","stream":"stdout","logtag":"F","message":"172.169.206.159 - - [16/Jan/2025:05:36:22 +0000] \\"GET /manager/text/list HTTP/1.1\\" 400 248 \\"-\\" \\"Mozilla/5.0 zgrab/0.x\\" 130 0.000 [] [] - - - - d799907e4dfd518d0da0a5b7dc4abeee","kubernetes":{"pod_name":"rke2-ingress-nginx-controller-xf7hc","namespace_name":"kube-system","pod_id":"1370c2e9-817a-44f8-9964-3d2a53d8c8f1","labels":{"app.kubernetes.io/component":"controller","app.kubernetes.io/instance":"rke2-ingress-nginx","app.kubernetes.io/managed-by":"Helm","app.kubernetes.io/name":"rke2-ingress-nginx","app.kubernetes.io/part-of":"rke2-ingress-nginx","app.kubernetes.io/version":"1.10.5","controller-revision-hash":"6878f8b594","helm.sh/chart":"rke2-ingress-nginx-4.10.502","pod-template-generation":"1"},"annotations":{"cni.projectcalico.org/containerID":"de1237c7b4801db54306573d69af92f3ab8e81a3364d27b99da032f5f35e8959","cni.projectcalico.org/podIP":"10.42.211.14/32","cni.projectcalico.org/podIPs":"10.42.211.14/32"},"host":"tj-rancheragent-rke2-all-0","container_name":"rke2-ingress-nginx-controller","docker_id":"427871614c79077e11e82d9dd3c250aecff8be44589b3cacb81abb243d0e0b92","container_hash":"docker.io/rancher/nginx-ingress-controller@sha256:ccbe0b44ce67eb74577017dcad4701c693412b86d5913a39b359cb7ff6d192f2","container_image":"docker.io/rancher/nginx-ingress-controller:v1.10.5-hardened4"}} 2025-01-16T04:39:47+00:00 kubernetes.var.log.containers.tigera-operator-84998664bd-qmrc8_tigera-operator_tigera-operator-122cc63fc9f3447fbafbe59a8b90883735c807e8dd3373925d51b74384f30818.log {"time":"2025-01-16T04:39:47.369827126Z","stream":"stderr","logtag":"F","message":"{\\"level\\":\\"info\\",\\"ts\\":\\"2025-01-16T04:39:47Z\\",\\"logger\\":\\"controller_installation\\",\\"msg\\":\\"Patching nftables mode\\",\\"Request.Namespace\\":\\"\\",\\"Request.Name\\":\\"periodic-5m0s-reconcile-event\\",\\"nftablesMode\\":\\"Disabled\\"}","kubernetes":{"pod_name":"tigera-operator-84998664bd-qmrc8","namespace_name":"tigera-operator","pod_id":"c80fca6d-9613-4321-90d3-6a183d959617","labels":{"k8s-app":"tigera-operator","name":"tigera-operator","pod-template-hash":"84998664bd"},"host":"tj-rancheragent-rke2-all-0","container_name":"tigera-operator","docker_id":"122cc63fc9f3447fbafbe59a8b90883735c807e8dd3373925d51b74384f30818","container_hash":"docker.io/rancher/mirrored-calico-operator@sha256:d02ad7bf6ef8b9d1617f370ac910cacc517371d2ceb809a8c58ec82d3cfa4581","container_image":"docker.io/rancher/mirrored-calico-operator:v1.36.0"}} 2025-01-16T04:39:55+00:00 rke2 {"level":"E","thread_id":"9827","filename":"dns.go","linenumber":"153","message":"\\"Nameserver limits exceeded\\" err=\\"Nameserver limits were exceeded, some nameservers have been omitted, the applied nameserver line is: 67.207.67.2 67.207.67.3 67.207.67.2\\""}'; 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