Skip to content
Open
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,4 @@
## Project

* [State machines and regexes](projects/state-mach-regex)

12 changes: 12 additions & 0 deletions objectives/regex/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,18 @@ Write a regex that matches any one or two digit number, followed by a space,
followed by the word `monkey`, followed by 0 or 1 `s`s.


#### Answer

``` js
let regex = /^\d{1,2}\smonkeys?$/

regex.test('12 monkeys') // true
regex.test('1 monkey') // true
regex.test('123 monkeys') // false
regex.test('12 monkeyss') // false
regex.test('there are 12 monkeys') // false
```

### Convert Regex to State Machine Diagram

Draw a state machine diagram for the following regex that matches a clock time.
Expand Down
29 changes: 18 additions & 11 deletions projects/state-mach-regex/extractlinks/extractlinks.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,27 @@
const fs = require('fs');
let fs = require('fs')

const args = process.argv.slice(2);
let readfile = path => fs.readFile(path, 'utf-8', (err, data) => data)

let args = process.argv.slice(2)

if (args.length != 1) {
console.error("usage: extractlinks inputfile");
process.exit(1);
console.error("usage: extractlinks inputfile")
process.exit(1)
}

const filename = args[0];

// !!!! IMPLEMENT ME
let filename = args[0]
let regex = /https?:\/\/?[\w.-]+(com|net|org|blog)[\/[\w-]*]*[(?|&)\w+=\w+]*/g

// Read file
let readFile = fs.readFileSync(filename, 'utf8', (err, data) => data)
let urls = readFile.match(regex)

// Set up regex
// Log array of URLs:
console.log(urls)

// Find matches
// Write each URL as a line to urls.txt
let outputFile = 'urls.txt'
let file = fs.createWriteStream(outputFile)
file.on('error', () => {})
urls.forEach(url => file.write(url + '\n'))
file.end()

// Print all matches
Loading