Code Monkey home page Code Monkey logo

regexpbuilder's Introduction

RegExpBuilder

A library for building RegExpPatterns. It is not available as a nuget package yet, because I would like to add some more features to it, before relasing a package. I'm not great at writing regex, so I would really appreciate any feedback if you have any.

What is it?

A linq extensions style of building RegExpPatterns in .NET.
Related Blogpost: I don't know Regex

Example

Good code is simple code.
Which one of these snippets of code do you want to find in your code?

var regEx = {(?:^)[A-Za-z]([A-Za-z]+|(?:\d+))(@{1,1})[A-Za-z]+(.{1,1})[A-Za-z]+(?:$)}

or

var builder = new Builder.RegExpBuilder();
var r = builder
	.StartOfInput()
    .Letter() // Must start with letter a-z
	.Letters() // any number of letters
    .Or() 
    .Digits() // any number of numbers
	.Exactly(1).Of("@")
	.Letters() // domain
	.Exactly(1).Of(".")
    .Letters() // top-level domain
    .EndOfInput()
    .ToRegExp();

#How to use it

Of("Github").Or().Of("BitBucket")

        var builder = new Builder.RegExpBuilder();
        var r = builder
            .StartOfLine()
            .Exactly(1).Of("github")
            .Or()
            .Exactly(1).Of("bitbucket")
            .EndOfLine()
            .ToRegExp();
		
		// r.ToString() == "(?:^)(github{1,1}|(?:bitbucket{1,1}))(?:$)"

        Assert.IsTrue(r.Match("github").Success, "Found one Github");
        Assert.IsTrue(r.Match("bitbucket").Success, "Found one Bitbucket");

        Assert.IsFalse(r.Match("githubgithub").Success, "Oops, Found too Many Github");
        Assert.IsFalse(r.Match("bitbucketbitbucket").Success, ""Oops, Found too Many Github");

Find one digit

var builder = new Builder.RegExpBuilder();
    var r = builder
			.StartOfLine()
            .Digit()
            .EndOfLine()
            .ToRegExp();

    r.Match("1").Success; // true
	r.Match("11").Success); // false

Exactly().Of("yourString")

public void ExactlyOfCustom()
    {

        var builder = new Builder.RegExpBuilder();
        var r = builder
            .StartOfLine()
            .Exactly(3)
            .Of("a")
            .EndOfLine()
            .ToRegExp();

        Assert.IsTrue(r.Match("aaa").Success, "Three Letters");
        Assert.IsFalse(r.Match("aaaa").Success, "four Letters");
        Assert.IsFalse(r.Match("aa").Success, "two Letters");
    }

###There is alot more examples in the test files! RegExpBuilderTests.cs

regexpbuilder's People

Contributors

abergs avatar

Watchers

Kuchaev Andrey avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.