Regular Expressions 101

Save & Share

  • Save new Regex
    ctrl+s
  • Update Regex
    ctrl+⇧+s
  • Add to Community Library

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

/
/

Test String

Code Generator

Generated Code

$re = '/.*<strong>(.*)<\/strong>\n.*is the latest/'; $str = ' <!doctype html> <html lang="en" prefix="og: http://ogp.me/ns#"> <head> <meta charset="utf-8"> <script nonce=\'43e749cb8f58165702ac7a328020359b8d733d661b14d13fead20e33cf955d87b293249b9a88e7d32857b72f245984d505e1d4228179ae09367c9475db764fbe\' type=\'text/javascript\'>window.NREUM||(NREUM={});NREUM.info = {"agent":"","beacon":"bam.nr-data.net","errorBeacon":"bam.nr-data.net","licenseKey":"ba86f45fc4","applicationID":"9556514","applicationTime":231.025229,"transactionName":"M1BXZxFZVkQFURBdVwoafVITURdwIWZLG0gFVl5SBF0XTBRTB19ZA1BI","queueTime":0,"ttGuid":"71fc9e8f8e5624","agentToken":null}; window.NREUM||(NREUM={}),__nr_require=function(e,t,n){function r(n){if(!t[n]){var o=t[n]={exports:{}};e[n][0].call(o.exports,function(t){var o=e[n][1][t];return r(o||t)},o,o.exports)}return t[n].exports}if("function"==typeof __nr_require)return __nr_require;for(var o=0;o<n.length;o++)r(n[o]);return r}({1:[function(e,t,n){function r(e,t){return function(){o(e,[(new Date).getTime()].concat(a(arguments)),null,t)}}var o=e("handle"),i=e(2),a=e(3);"undefined"==typeof window.newrelic&&(newrelic=NREUM);var u=["setPageViewName","addPageAction","setCustomAttribute","finished","addToTrace","inlineHit"],c=["addPageAction"],f="api-";i(u,function(e,t){newrelic[t]=r(f+t,"api")}),i(c,function(e,t){newrelic[t]=r(f+t)}),t.exports=newrelic,newrelic.noticeError=function(e){"string"==typeof e&&(e=new Error(e)),o("err",[e,(new Date).getTime()])}},{}],2:[function(e,t,n){function r(e,t){var n=[],r="",i=0;for(r in e)o.call(e,r)&&(n[i]=t(r,e[r]),i+=1);return n}var o=Object.prototype.hasOwnProperty;t.exports=r},{}],3:[function(e,t,n){function r(e,t,n){t||(t=0),"undefined"==typeof n&&(n=e?e.length:0);for(var r=-1,o=n-t||0,i=Array(0>o?0:o);++r<o;)i[r]=e[t+r];return i}t.exports=r},{}],ee:[function(e,t,n){function r(){}function o(e){function t(e){return e&&e instanceof r?e:e?u(e,a,i):i()}function n(n,r,o){e&&e(n,r,o);for(var i=t(o),a=l(n),u=a.length,c=0;u>c;c++)a[c].apply(i,r);var s=f[g[n]];return s&&s.push([m,n,r,i]),i}function p(e,t){w[e]=l(e).concat(t)}function l(e){return w[e]||[]}function d(e){return s[e]=s[e]||o(n)}function v(e,t){c(e,function(e,n){t=t||"feature",g[n]=t,t in f||(f[t]=[])})}var w={},g={},m={on:p,emit:n,get:d,listeners:l,context:t,buffer:v};return m}function i(){return new r}var a="nr@context",u=e("gos"),c=e(2),f={},s={},p=t.exports=o();p.backlog=f},{}],gos:[function(e,t,n){function r(e,t,n){if(o.call(e,t))return e[t];var r=n();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!1}),r}catch(i){}return e[t]=r,r}var o=Object.prototype.hasOwnProperty;t.exports=r},{}],handle:[function(e,t,n){function r(e,t,n,r){o.buffer([e],r),o.emit(e,t,n)}var o=e("ee").get("handle");t.exports=r,r.ee=o},{}],id:[function(e,t,n){function r(e){var t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===window?0:a(e,i,function(){return o++})}var o=1,i="nr@id",a=e("gos");t.exports=r},{}],loader:[function(e,t,n){function r(){if(!w++){var e=v.info=NREUM.info,t=s.getElementsByTagName("script")[0];if(e&&e.licenseKey&&e.applicationID&&t){c(l,function(t,n){e[t]||(e[t]=n)});var n="https"===p.split(":")[0]||e.sslForHttp;v.proto=n?"https://":"http://",u("mark",["onload",a()],null,"api");var r=s.createElement("script");r.src=v.proto+e.agent,t.parentNode.insertBefore(r,t)}}}function o(){"complete"===s.readyState&&i()}function i(){u("mark",["domContent",a()],null,"api")}function a(){return(new Date).getTime()}var u=e("handle"),c=e(2),f=window,s=f.document;NREUM.o={ST:setTimeout,CT:clearTimeout,XHR:f.XMLHttpRequest,REQ:f.Request,EV:f.Event,PR:f.Promise,MO:f.MutationObserver},e(1);var p=""+location,l={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",agent:"js-agent.newrelic.com/nr-918.min.js"},d=window.XMLHttpRequest&&XMLHttpRequest.prototype&&XMLHttpRequest.prototype.addEventListener&&!/CriOS/.test(navigator.userAgent),v=t.exports={offset:a(),origin:p,features:{},xhrWrappable:d};s.addEventListener?(s.addEventListener("DOMContentLoaded",i,!1),f.addEventListener("load",r,!1)):(s.attachEvent("onreadystatechange",o),f.attachEvent("onload",r)),u("mark",["firstbyte",a()],null,"api");var w=0},{}]},{},["loader"]);</script> <title>pimatic</title> <meta name="description" content="A home automation server and framework for the Raspberry PI running on node.js"> <meta property="og:description" content="A home automation server and framework for the Raspberry PI running on node.js"> <meta property="og:title" content="pimatic"> <meta property="og:url" content="https://www.npmjs.com/package/pimatic"> <meta property="og:site_name" content="npm"> <meta name="keywords" content=""> <meta name="twitter:card" content="summary"> <meta name="twitter:url" content="https://www.npmjs.com/package/pimatic"> <meta name="twitter:title" content="npm: pimatic"> <meta name="twitter:description" content="A home automation server and framework for the Raspberry PI running on node.js"> <meta http-equiv="cleartype" content="on" /> <meta name="apple-mobile-web-app-capable" content="no"> <meta name="viewport" content="width=device-width,minimum-scale=1.0,initial-scale=1,user-scalable=yes"> <meta name="x-npm:ga:id" content="UA-47041310-1"> <meta name="x-npm:ga:dimensions" content="{&quot;aboveChrome&quot;:&quot;dimension1&quot;,&quot;belowHeader&quot;:&quot;dimension3&quot;,&quot;packagePage&quot;:&quot;dimension2&quot;}"> <link rel="canonical" href="https://www.npmjs.com/package/pimatic"> <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="npm"> <link rel="stylesheet" media="all" href="/static/css/index.0854e9c6.css"> <!--[if lt IE 9]> <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js"></script> <![endif]--> <link rel="stylesheet" href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700"> <script src="/static/js/index.min.bc5853f2.js"></script> <style> .marketing { margin: 0px; margin-left: -10px; margin-bottom: 40px; padding: 0px 0px; font-size: 15px; font-style: normal; fond-variant: normal; fort-weight: normal; background: rgba(0, 0, 0, 0.02); border-radius: 2px; border: 1px solid rgba(0, 0, 0, 0.2); color: rgba(0, 0, 0, 0.4); text-decoration: none; letter-spacing: -0.03em; line-height: 22.5px; } .marketing a { font-weight: 400; text-decoration: none; color: #cb3837; } .marketing h3 { display: block; margin: 0; padding: 20px 0 10px 0; font-size: 20px; font-style: normal; font-variant: normal; font-weight: 400; line-height: 22px; text-decoration: none; color: rgba(0, 0, 0, 0.8); } .marketing h3 a { color: rgba(0, 0, 0, 0.8); } .marketing h3 a:hover { color: #cb3837; } .marketing p { line-height: 22.5px; margin-left: 10px; margin-right: 10px; } .marketing p a { white-space: nowrap; } #marketing-texthed { margin-left: 10px; } </style> <link rel="apple-touch-icon" sizes="57x57" href="/static/images/touch-icons/apple-touch-icon-57x57.png"> <link rel="apple-touch-icon" sizes="60x60" href="/static/images/touch-icons/apple-touch-icon-60x60.png"> <link rel="apple-touch-icon" sizes="72x72" href="/static/images/touch-icons/apple-touch-icon-72x72.png"> <link rel="apple-touch-icon" sizes="76x76" href="/static/images/touch-icons/apple-touch-icon-76x76.png"> <link rel="apple-touch-icon" sizes="114x114" href="/static/images/touch-icons/apple-touch-icon-114x114.png"> <link rel="apple-touch-icon" sizes="120x120" href="/static/images/touch-icons/apple-touch-icon-120x120.png"> <link rel="apple-touch-icon" sizes="144x144" href="/static/images/touch-icons/apple-touch-icon-144x144.png"> <link rel="apple-touch-icon" sizes="152x152" href="/static/images/touch-icons/apple-touch-icon-152x152.png"> <link rel="apple-touch-icon" sizes="180x180" href="/static/images/touch-icons/apple-touch-icon-180x180.png"> <link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 1)" href="/static/images/touch-icons/apple-touch-startup-image-1024x748.png"> <link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 2)" href="/static/images/touch-icons/apple-touch-startup-image-1536x2008.png"> <link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 2)" href="/static/images/touch-icons/apple-touch-startup-image-2048x1496.png"> <link rel="apple-touch-startup-image" media="(device-width: 320px) and (device-height: 480px) and (-webkit-device-pixel-ratio: 1)" href="/static/images/touch-icons/apple-touch-startup-image-320x460.png"> <link rel="apple-touch-startup-image" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)" href="/static/images/touch-icons/apple-touch-startup-image-640x1096.png"> <link rel="apple-touch-startup-image" media="(device-width: 320px) and (device-height: 480px) and (-webkit-device-pixel-ratio: 2)" href="/static/images/touch-icons/apple-touch-startup-image-640x920.png"> <link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 1)" href="/static/images/touch-icons/apple-touch-startup-image-768x1004.png"> <link rel="icon" type="image/png" href="/static/images/touch-icons/favicon-32x32.png" sizes="32x32"> <link rel="icon" type="image/png" href="/static/images/touch-icons/favicon-230x230.png" sizes="230x230"> <link rel="icon" type="image/png" href="/static/images/touch-icons/favicon-96x96.png" sizes="96x96"> <link rel="icon" type="image/png" href="/static/images/touch-icons/android-chrome-192x192.png" sizes="192x192"> <link rel="icon" type="image/png" href="/static/images/touch-icons/coast-228x228.png" sizes="228x228"> <link rel="icon" type="image/png" href="/static/images/touch-icons/favicon-16x16.png" sizes="16x16"> <link rel="manifest" href="/static/images/touch-icons/manifest.json"> <link rel="shortcut icon" href="/static/images/touch-icons/favicon.ico"> <link rel="yandex-tableau-widget" href="/static/images/touch-icons/yandex-browser-manifest.json"> <meta property="og:image" content="https://www.npmjs.com/static/images/touch-icons/open-graph.png"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="msapplication-TileColor" content="#cb3837"> <meta name="msapplication-TileImage" content="/static/images/touch-icons/mstile-144x144.png"> <meta name="msapplication-config" content="/static/images/touch-icons/browserconfig.xml"> <meta name="theme-color" content="#cb3837"> </head> <body itemscope itemtype="http://schema.org/WebSite" data-crumb="IEusgfXm286AAnpHaAR2NylabzdKygtWIEV57Sym6Au"> <meta itemprop="url" content="https://www.npmjs.com/"> <header class="logged-in "> <!-- logo --> <div class="header-item brand-container"> <div class="logo-container" id=\'npm-logo\'> <a href="/"><img src="/static/images/npm-logo.svg" alt="npm logo" /></a> </div> </div> <!-- /logo --> <!-- search --> <div class="header-item header-search-container"> <form class="site-search" id="npm-search" action="/search" method="get" itemprop="potentialAction" itemscope itemtype="http://schema.org/SearchAction"> <meta itemprop="target" content="https://www.npmjs.com/search?q={q}"> <div id="site-search-container"> <input name="q" value="" type="search" id="site-search" placeholder="find packages" tabindex="1" autocorrect="off" autocapitalize="off" itemprop="query-input" /> </div> <input type="submit"/> </form> </div> <!-- menu 1 --> <div class="header-item user-info-container"> <div class="user-info"> <div class="drop-down-menu-container" role="navigation"> <a id="user-info-drop-down-menu-toggle" class="drop-down-menu-toggle" href="#user-info-menu" role="button" aria-haspopup="true" aria-owns="user-info-menu"><span class="a11y-only">Toggle User Menu</span> <span class="user-info-salutation" data-user-name="thex" data-is-paid="">Greetings, <span id="salutation-username">thex</span></span> <img alt="" src="https://s.gravatar.com/avatar/0b8b602c5cd59dad317311d10ef658a3?size&#x3D;50&amp;default&#x3D;retro" /> </a> <div role="menu" id="user-info-menu" class="drop-down-menu" aria-labelledby="user-info-drop-down-menu-toggle"> <div class="drop-down-menu-section"> <ul> <li><a href="/~thex">profile</a></li> <li><a href="/profile-edit">personal info</a></li> <li><a href="/settings/billing">billing</a></li> <li><a href="/settings/tokens">tokens</a></li> <li><form method="POST" action="/logout"> <input type="hidden" name="crumb" value="IEusgfXm286AAnpHaAR2NylabzdKygtWIEV57Sym6Au"/> <button type="submit" class="btn-link">logout</button></form></li> </ul> </div> <!-- .drop-down-menu-section --> </div> <!-- .drop-down-menu --> </div> <!-- .drop-down-menu-container --> </div> <!-- .user-info --> </div> <!-- /menu 1 --> <!-- menu 2 --> <div class="header-item header-nav-menu-container"> <a href="#" id="npm-expansions" class="npm-expansions" data-event-trigger="click" data-event-name="npm-expansions">node package manager</a> <div class="nav-menu-container" role="navigation"> <a class="nav-toggle drop-down-menu-toggle" href="#product-navigation"><span class="a11y-only">Toggle Navigation</span> <img alt="mobile navigation menu" src="/static/images/mobile-menu.png" /> </a> <div class="drop-down-menu-container" role="menu"> <nav id="product-navigation" class="product-navigation drop-down-menu"> <ul class="drop-down-menu-section products-list"> <li><a id="nav-enterprise-link" href="/npm/enterprise">npm Enterprise</a></li> <li><a id="nav-private-link" href="/npm/private-packages" data-event-trigger="click" data-event-name="private-modules-nav-link">npm Private Packages</a></li> <li><a id="nav-oss-link" href="/npm/open-source">npm Open Source</a></li> <li><a id="nav-docs-link" href="https://docs.npmjs.com">documentation</a></li> <li><a id="nav-support-link" href="/support">support</a></li> </ul> </nav> </div> </div> </div> <!-- /menu 2 --> </header> <div class="container content"> <div class="content-column"> <h1 class="package-name"> <a href="/package/pimatic">pimatic</a> <i class="icon-public"></i> </h1> <p class="package-description">A home automation server and framework for the Raspberry PI running on node.js</p> <form class="star"> <input type="hidden" name="name" value="pimatic"> <input id="star-input" type="checkbox" name="isStarred" value="true" > <label for="star-input" class="icon-star"></label> <input type="hidden" name="crumb" value="IEusgfXm286AAnpHaAR2NylabzdKygtWIEV57Sym6Au"/> </form> <div id="readme" class="markdown"> <h1 id="user-content-pimatic" class="deep-link package-name-redundant"><a href="#pimatic">pimatic</a></h1> <p><a href="https://travis-ci.org/pimatic/pimatic"><img src="https://travis-ci.org/pimatic/pimatic.png?branch=master" class="badge"></a> <a href="http://badge.fury.io/js/pimatic"><img src="https://badge.fury.io/js/pimatic.png" class="badge"></a> <a href="https://waffle.io/pimatic/pimatic"><img src="https://badge.waffle.io/pimatic/pimatic.png?label=ready&amp;title=Ready"></a></p> <p>pimatic is a home automation framework that runs on <a href="http://nodejs.org">node.js</a>. It provides a common extensible platform for home control and automation tasks.</p> <p>Read more at <a href="http://pimatic.org/">pimatic.org</a> or visit the <a href="http://forum.pimatic.org">forum</a>.</p> <p class="badge-only"><a href="https://gitter.im/pimatic/pimatic?utm_source=badge&amp;utm_medium=badge&amp;utm_campaign=pr-badge&amp;utm_content=badge"><img src="https://badges.gitter.im/Join%20Chat.svg" class="badge"></a></p> <h2 id="user-content-screenshots" class="deep-link"><a href="#screenshots">Screenshots</a></h2> <p><a href="http://www.pimatic.org/screens/screen1.png"><img src="http://www.pimatic.org/screens/screen1_thumb.png?v=1"></a> <a href="http://www.pimatic.org/screens/screen2.png"><img src="http://www.pimatic.org/screens/screen2_thumb.png?v=1"></a> <a href="http://www.pimatic.org/screens/screen3.png"><img src="http://www.pimatic.org/screens/screen3_thumb.png?v=1"></a> <a href="http://www.pimatic.org/screens/screen4.png"><img src="http://www.pimatic.org/screens/screen4_thumb.png?v=1"></a></p> <h2 id="user-content-getting-started" class="deep-link"><a href="#getting-started">Getting Started</a></h2> <p><a href="http://pimatic.org/guide/getting-started/installation/">Install instruction</a> can be found on <a href="http://pimatic.org/">pimatic.org</a>. If you need any help, <a href="http://forum.pimatic.org">ask at the forum</a>.</p> <h2 id="user-content-donation" class="deep-link"><a href="#donation">Donation</a></h2> <p>Happy with pimatic and using it everyday? Consider a donation to support development and keeping the website and forum up: <a href="https://www.gittip.com/sweetpi/"><img src="http://img.shields.io/gittip/sweetpi.png" class="badge"></a> <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;hosted_button_id=KCVVRY4243JS6"><img src="http://img.shields.io/paypal/donate.png?color=blue" class="badge"></a></p> <p>We promise, that pimatic will always be free to use and its code be open sourced.</p> <h2 id="user-content-get-involved" class="deep-link"><a href="#get-involved">Get Involved</a></h2> <p>pimatic is your opportunity to <a href="https://github.com/pimatic/pimatic/issues/223">contribute to a growing OpenSource-Project</a>.</p> <h2 id="user-content-architecture-overview" class="deep-link"><a href="#architecture-overview">Architecture Overview</a></h2> <pre><code>+-------------------------------------------+ | mobile- | rest- | cron | homeduino | ... | Plugins (Views, Device-/Preidcates- | frontend | api | | | | Action-Provider, Services) |-------------------------------------------| | pimatic (framework) | Framework |-------------------------------------------| | rule | device | (core) | (core) | Model | system | schemata | predicates | actions | |-------------------------------------------| | node.js (non-blocking, async IO, | Low-Level Infrastructure | event-loop, v8) | +-------------------------------------------+ </code></pre> <h2 id="user-content-extensions-and-hacking" class="deep-link"><a href="#extensions-and-hacking">Extensions and Hacking</a></h2> <p>The framework is built to be extendable by plugins. If you have devices that are currently not supported please add a plugin for your devices. As well, if you have a nice Ideas for plugins or need support for specials devices you are welcome to create a issue or submit a patch.</p> <p>For plugin development take a look at the <a href="http://pimatic.org/guide/development/required-skills-readings/">development guide</a> and <a href="https://github.com/pimatic/pimatic-plugin-template">plugin template</a>.</p> <p>Feel free to ask development questions at the <a href="https://github.com/sweetpi/pimatic-plugin-template/issues">plugin template repository</a>.</p> <h2 id="user-content-copyright--license" class="deep-link"><a href="#copyright--license">Copyright / License</a></h2> <pre><code>Copyright (C) 2014 Oliver Schneider &lt;oliverschneider89+sweetpi@gmail.com&gt; pimatic is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. pimatic is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with pimatic. If not, see &lt;http://www.gnu.org/licenses/&gt;. </code></pre> </div> </div> <div class="sidebar"> <div class="promotion" data-promotion-id="544" data-promotion-spot="packagePage"><div class="marketing"> <h3 id="marketing-texthed"><a href="http://npm.me/b3" title="Socks for docs">You need clean socks</a></h3> <p>And we need help with npm and its docs. A trade is in order. <a href="http://npm.me/b3" title="Socks for docs">Socks for docs »</a></p></div></div> <div class="autoselect-wrapper npm-install icon-download"> <input type="text" value="npm install pimatic" readonly> <p><a href="/package/pimatic/tutorial">how? learn more</a></p> </div> <ul class="box"> <li class="last-publisher"> <a href="/~sweetpi"> <img src="https://s.gravatar.com/avatar/b7bde30df8a5ad35cdbd0d010c9ae422?size&#x3D;100&amp;default&#x3D;retro" alt="sweetpi" /> <span>sweetpi</span> </a> published <span data-date="2016-04-18T05:38:28.264Z" data-date-format="relative"> 2016-04-18T05:38:28.264Z </span> </li> <li> <strong>0.8.104</strong> is the latest of 153 releases </li> <li> <a href="https://github.com/pimatic/pimatic">github.com/pimatic/pimatic</a> </li> <li> <a href="http://spdx.org/licenses/GPL-2.0">GPL-2.0</a> <img class="osi" alt="Licensed on OSI-approved terms" src="/static/images/osi.svg">® </li> </ul> <h3 title="collaborators"> <a href="/package/pimatic/access">Collaborators</a> </h3> <ul class="humans collaborators"> <li> <a href="/~sweetpi" rel="tipsy" title="sweetpi"> <img src="https://s.gravatar.com/avatar/b7bde30df8a5ad35cdbd0d010c9ae422?size&#x3D;100&amp;default&#x3D;retro" alt="sweetpi"> </a> </li> <li> <a href="/~mwittig" rel="tipsy" title="mwittig"> <img src="https://s.gravatar.com/avatar/7ece3b1061678363ed5a809e30ade01d?size&#x3D;100&amp;default&#x3D;retro" alt="mwittig"> </a> </li> </ul> <h3>Stats</h3> <ul class="box"> <li> <strong class="pretty-number daily-downloads">241</strong> downloads in the last day </li> <li> <strong class="pretty-number weekly-downloads">5239</strong> downloads in the last week </li> <li> <strong class="pretty-number monthly-downloads">10159</strong> downloads in the last month </li> <li id="issues" data-ghapi="https://api.github.com/repos/pimatic/pimatic"> <span class="original">Have an issue? <a href="https://github.com/pimatic/pimatic/issues">File it.</a></span> <span class="enhanced" style="display:none"> <a href="https://github.com/pimatic/pimatic/issues"></a> on GitHub </span> </li> <li id="pull_requests" style="display:none"> <a href="https://github.com/pimatic/pimatic/pulls"></a> on GitHub </li> </ul> <h3>Try it out</h3> <ul class="box"> <li class="tonicdev"><a href="https://tonicdev.com/npm/pimatic" target="_blank">Test pimatic in your browser.</a></li> </ul> <h3>Keywords</h3> <p class="list-of-links"> None </p> <h3>Dependencies (30)</h3> <p class="list-of-links"> <a href="/package/cjson">cjson</a>, <a href="/package/winston">winston</a>, <a href="/package/string">string</a>, <a href="/package/source-map-support">source-map-support</a>, <a href="/package/socket.io">socket.io</a>, <a href="/package/semver">semver</a>, <a href="/package/request-promise">request-promise</a>, <a href="/package/relaxed-json">relaxed-json</a>, <a href="/package/moment">moment</a>, <a href="/package/logrotate-stream">logrotate-stream</a>, <a href="/package/lodash">lodash</a>, <a href="/package/knex">knex</a>, <a href="/package/jayschema">jayschema</a>, <a href="/package/i18n">i18n</a>, <a href="/package/human-format">human-format</a>, <a href="/package/gethub">gethub</a>, <a href="/package/fs.extra">fs.extra</a>, <a href="/package/express">express</a>, <a href="/package/decl-api">decl-api</a>, <a href="/package/date-format-lite">date-format-lite</a>, <a href="/package/daemon">daemon</a>, <a href="/package/cross-spawn">cross-spawn</a>, <a href="/package/convict">convict</a>, <a href="/package/connect-timeout">connect-timeout</a>, <a href="/package/colors">colors</a>, <a href="/package/coffee-script">coffee-script</a>, <a href="/package/jsonlint">jsonlint</a>, <a href="/package/cassert">cassert</a>, <a href="/package/byline">byline</a>, <a href="/package/bluebird">bluebird</a> </p> <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "SoftwareApplication", "name": "pimatic", "description": "A home automation server and framework for the Raspberry PI running on node.js", "url": "https://www.npmjs.com/package/pimatic", "keywords": "", "applicationCategory": "DeveloperApplication", "offers": { "@type": "Offer", "price": "0.00" } } </script> <div class="hiring-container" data-template="sidebar"></div> </div> </div> <footer class="pane bg-npm-navy-1"> <div class="container"> <div class="row"> <div class="col-md-6 col-md-offset-3"> <h3 class="h4 type-npm-pastel-3">You Need Help</h3> <hr class="divider-1"> <ul class="list-unstyled h6 em-default"> <li class="pbl"><a class="type-neutral-11" href="https://docs.npmjs.com">Documentation</a></li> <li class="pbl"><a class="type-neutral-11" href="/support">Support / Contact Us</a></li> <li class="pbl"><a class="type-neutral-11" href="http://status.npmjs.org/">Registry Status</a></li> <li class="pbl"><a class="type-neutral-11" href="https://github.com/npm/newww/issues">Website Issues</a></li> <li class="pbl"><a class="type-neutral-11" href="https://github.com/npm/npm/issues">CLI Issues</a></li> <li class="pbl"><a class="type-neutral-11" href="/policies/security">Security</a></li> </ul> </div> <div class="col-md-6 col-md-offset-1"> <h3 class="h4 type-npm-pastel-3">About npm</h3> <hr class="divider-1"> <ul class="list-unstyled h6 em-default"> <li class="pbl"><a class="type-neutral-11" href="/about">About npm, Inc</a></li> <li class="pbl"><a class="type-neutral-11" href="/jobs">Jobs</a></li> <li class="pbl"><a class="type-neutral-11" href="/npm-weekly">npm Weekly</a></li> <li class="pbl"><a class="type-neutral-11" href="http://blog.npmjs.org">Blog</a></li> <li class="pbl"><a class="type-neutral-11" href="https://twitter.com/npmjs">Twitter</a></li> <li class="pbl"><a class="type-neutral-11" href="https://github.com/npm">GitHub</a></li> </ul> </div> <div class="col-md-6 col-md-offset-1"> <h3 class="h4 type-npm-pastel-3">Legal Stuff</h3> <hr class="divider-1"> <ul class="list-unstyled h6 em-default"> <li class="pbl"><a class="type-neutral-11" href="/policies/terms">Terms of Use</a></li> <li class="pbl"><a class="type-neutral-11" href="/policies/conduct">Code of Conduct</a></li> <li class="pbl"><a class="type-neutral-11" href="/policies/disputes">Package Name Disputes</a></li> <li class="pbl"><a class="type-neutral-11" href="/policies/privacy">Privacy Policy</a></li> <li class="pbl"><a class="type-neutral-11" href="/policies/receiving-reports">Reporting Abuse</a></li> <li class="pbl"><a class="type-neutral-11" href="/policies/">Other policies</a></li> </ul> </div> </div> </div> <div class="txt-c container"> <a class="npm-loves-you type-neutral-11" href="/"> npm loves you </a> </div> </footer> <script defer src="/static/js/vendor.min.a3c53b90.js"></script> <script defer async src="https://cdn.optimizely.com/js/3318080746.js"></script> <script defer async src=\'//img.en25.com/i/elqCfg.min.js\'></script><!-- Eloqua --> </body> </html> <!-- pid&#x3D;21338 63597af6aec904274e7247f6674d1697d63b3392 https://www.npmjs.com www-13-west.internal.npmjs.com --> '; preg_match($re, $str, $matches, PREG_OFFSET_CAPTURE, 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