title: Can't match regex with sed
body: <p>I'm trying to match a pattern <code>(\^|\~?)(\d|x|\*)+\.(\d|x|\*)+\.(\d|x|\*)+</code> with <code>sed</code> without luck.
  The file I'm running through is this:</p>
  
  <pre><code>{
    "name": "something",
    "version": "0.0.1",
    "description": "some desc",
    "main": "gulpfile.js",
    "directories": {
      "test": "tests"
    },
    "dependencies": {
      "babel-polyfill": "^6.7.4",
      "babel-preset-es2015": "^6.6.0",
      "babel-preset-react": "^6.5.0",
      "gulp-clean": "^0.3.2",
      "jquery": "^2.1.4",
      "lodash": "^4.0.0",
      "moment": "^2.13.0",
      "moment-timezone": "^0.5.0",
      "radium": "^0.16.2",
      "react": "^15.1.0",
      "react-bootstrap-sweetalert": "^1.1.10",
      "react-dom": "^15.1.0",
      "react-timeago": "^2.2.1",
      "sprintf": "^0.1.5",
      "smoothscroll": "~0.2.2"
    },
    "devDependencies": {
      "babel": "^6.3.26",
      "babelify": "^7.2.0",
      "browserify": "~12.0.1",
      "console-stamp": "^0.2.0",
      "estraverse-fb": "^1.3.1",
      "gulp": "^3.9.0",
      "gulp-concat": "^2.6.0",
      "gulp-sass": "^2.1.1",
      "gulp-sourcemaps": "^1.6.0",
      "gulp-util": "^3.0.7",
      "lodash": "4.5.1",
      "lodash.assign": "^3.2.0",
      "lodash.isfunction": "^3.0.8",
      "lodash.reduce": "^4.3.0",
      "node-sass": "3.4.2",
      "react-bootstrap": "^0.29.4",
      "react-intl": "2.1.0",
      "reactify": "1.1.1",
      "sweetalert": "^1.1.3",
      "vinyl": "^1.1.0",
      "vinyl-buffer": "^1.0.0",
      "vinyl-source-stream": "^1.1.0",
      "watchify": "^3.4.0",
      "jsx-to-string": "~0.2.11"
    },
    "optionalDependencies": {
      "pkg-save": "~1.0.2"
    },
    "scripts": {
      "test": "echo \"Error: no test specified\" &amp;&amp; exit 1"
    },
    "repository": {
      "type": "git",
      "url": "someurl"
    },
    "author": "authorname",
    "license": "MIT"
  }
  </code></pre>
  
  <p>As you can see in regexr it matches the desired pattern (also matching "version" but that's another issue I'll tackle later):
  <a href="http://regexr.com/3e324" rel="nofollow">http://regexr.com/3e324</a></p>
  
  <p>I'm invoking invoking sed with the following command:<br>
  <code>cat package.json | sed 's/(\^|\~?)(\d|x|\*)+\.(\d|x|\*)+\.(\d|x|\*)+/Hello/g' -r</code></p>
  
  <p>For the sake of brevity, it outputs something like (ie. unfiltered input):</p>
  
  <pre><code>...
  "dependencies": {
      "babel-polyfill": "^6.7.4",
      "babel-preset-es2015": "^6.6.0",
      "babel-preset-react": "^6.5.0",
      "gulp-clean": "^0.3.2",
  ...
  </code></pre>
  
  <p>It should replace all digits with "Hello".<br>
  What am I doing wrong?<br>
  Something to do with bad flags (I've tried <code>/gm</code>)<br>
  or not using the correct regex engine (I'm passing the <code>-r</code> option to utilize extended regex)?</p>