Community Patterns

36

best youtube id match ( iframe embed replace ready )

Created·2019-03-12 16:17
Flavor·PCRE (Legacy)
Recommended·
MATCH ANY YOUTUBE ID author : mi-ca v1.0 – 2017.03.08 This Regex match any youtube url and grab the ID. Embed ready √ -- `http://www.youtube.com/watch?v=vpiMAaPTze8 http://youtu.be/l_la5XiQJdk http://youtu.be/NLqAF9hrVbY https://youtu.be/qT47KF5pvfw https://youtu.be/zImHyTyYhM8?t=4s http://www.youtube.com/v/NLqAF9hrVbY?fs=1&hl=en_US http://www.youtube.com/v/NLqAF9hrVbY?fs=1&hl=en_US http://www.youtube.com/watch?v=NLqAF9hrVbY http://www.youtube.com/user/Scobleizer#p/u/1/1p3vcRhsYGo http://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I http://www.youtube.com/sandalsResorts#p/c/54B8C800269D7C1B/2/PPS-8DMrAn4 http://gdata.youtube.com/feeds/api/videos/NLqAF9hrVbY http://www.youtube.com/watch?v=spDj54kf-vY&feature=g-vrec http://www.youtube.com/watch?v=spDj54kf-vY&feature=youtu.be http://www.youtube-nocookie.com/watch?v=NLqAF9hrVbY http://www.youtube.com/embed/NLqAF9hrVbY https://www.youtube.com/embed/NLqAF9hrVbY https://www.youtube.com/watch?v=MRl7cxSOXdU&feature=youtu.be https://www.youtube.com/watch?v=q07SQFmL4rM https://www.youtube.com/watch?v=q07SQFmL4yM https://www.youtube.com/watch?time_continue=4&v=zImHyTyYhM8 http://www.youtube.com/embed/dQw4w9WgXcQ ... http://www.youtube.com/watch?v=dQw4w9WgXcQ ... http://www.youtube.com/?v=dQw4w9WgXcQ ... http://www.youtube.com/v/dQw4w9WgXcQ ... http://www.youtube.com/e/dQw4w9WgXcQ ... http://www.youtube.com/user/username#p/u/11/dQw4w9WgXcQ ... http://www.youtube.com/sandalsResorts#p/c/54B8C800269D7C1B/0/dQw4w9WgXcQ ... http://www.youtube.com/watch?feature=player_embedded&v=dQw4w9WgXcQ ... http://www.youtube.com/?feature=player_embedded&v=dQw4w9WgXcQ ... https://www.youtube.com/watch?v=DFYRQ_zQ-gk&feature=featured https://www.youtube.com/watch?v=DFYRQ_zQ-gk http://www.youtube.com/watch?v=DFYRQ_zQ-gk //www.youtube.com/watch?v=DFYRQ_zQ-gk www.youtube.com/watch?v=DFYRQ_zQ-gk https://youtube.com/watch?v=DFYRQ_zQ-gk http://youtube.com/watch?v=DFYRQ_zQ-gk //youtube.com/watch?v=DFYRQ_zQ-gk youtube.com/watch?v=DFYRQ_zQ-gk https://m.youtube.com/watch?v=DFYRQ_zQ-gk http://m.youtube.com/watch?v=DFYRQ_zQ-gk //m.youtube.com/watch?v=DFYRQ_zQ-gk m.youtube.com/watch?v=DFYRQ_zQ-gk https://www.youtube.com/v/DFYRQ_zQ-gk?fs=1&hl=en_US http://www.youtube.com/v/DFYRQ_zQ-gk?fs=1&hl=en_US //www.youtube.com/v/DFYRQ_zQ-gk?fs=1&hl=en_US www.youtube.com/v/DFYRQ_zQ-gk?fs=1&hl=en_US youtube.com/v/DFYRQ_zQ-gk?fs=1&hl=en_US https://www.youtube.com/embed/DFYRQ_zQ-gk?autoplay=1 https://www.youtube.com/embed/DFYRQ_zQ-gk http://www.youtube.com/embed/DFYRQ_zQ-gk //www.youtube.com/embed/DFYRQ_zQ-gk www.youtube.com/embed/DFYRQ_zQ-gk https://youtube.com/embed/DFYRQ_zQ-gk http://youtube.com/embed/DFYRQ_zQ-gk //youtube.com/embed/DFYRQ_zQ-gk youtube.com/embed/DFYRQ_zQ-gk https://youtu.be/DFYRQ_zQ-gk?t=120 https://youtu.be/DFYRQ_zQ-gk http://youtu.be/DFYRQ_zQ-gk //youtu.be/DFYRQ_zQ-gk youtu.be/DFYRQ_zQ-gk https://www.youtube.com/watch?v=DFYRQ_zQ-gk&feature=featured https://www.youtube.com/watch?v=DFYRQ_zQ-gk http://www.youtube.com/watch?v=DFYRQ_zQ-gk //www.youtube.com/watch?v=DFYRQ_zQ-gk www.youtube.com/watch?v=DFYRQ_zQ-gk https://youtube.com/watch?v=DFYRQ_zQ-gk http://youtube.com/watch?v=DFYRQ_zQ-gk //youtube.com/watch?v=DFYRQ_zQ-gk youtube.com/watch?v=DFYRQ_zQ-gk https://m.youtube.com/watch?v=DFYRQ_zQ-gk http://m.youtube.com/watch?v=DFYRQ_zQ-gk //m.youtube.com/watch?v=DFYRQ_zQ-gk m.youtube.com/watch?v=DFYRQ_zQ-gk https://www.youtube.com/v/DFYRQ_zQ-gk?fs=1&hl=en_US http://www.youtube.com/v/DFYRQ_zQ-gk?fs=1&hl=en_US //www.youtube.com/v/DFYRQ_zQ-gk?fs=1&hl=en_US www.youtube.com/v/DFYRQ_zQ-gk?fs=1&hl=en_US youtube.com/v/DFYRQ_zQ-gk?fs=1&hl=en_US https://www.youtube.com/embed/DFYRQ_zQ-gk?autoplay=1 https://www.youtube.com/embed/DFYRQ_zQ-gk http://www.youtube.com/embed/DFYRQ_zQ-gk //www.youtube.com/embed/DFYRQ_zQ-gk www.youtube.com/embed/DFYRQ_zQ-gk https://youtube.com/embed/DFYRQ_zQ-gk http://youtube.com/embed/DFYRQ_zQ-gk //youtube.com/embed/DFYRQ_zQ-gk youtube.com/embed/DFYRQ_zQ-gk https://youtu.be/DFYRQ_zQ-gk?t=120 https://youtu.be/DFYRQ_zQ-gk http://youtu.be/DFYRQ_zQ-gk //youtu.be/DFYRQ_zQ-gk youtu.be/DFYRQ_zQ-gk https://www.youtube.com/HamdiKickProduction?v=DFYRQ_zQ-gk `
Submitted by mi-ca.ch
21

Get path from any text

Created·2023-01-31 14:38
Updated·2023-07-23 20:17
Flavor·PCRE2 (PHP)
Recommended·
Get path (windows style) from any type of text (error message, e-mail corps ...), quoted or not. THIS IS THE SINGLE LINE VERSION ! If you want understand how it work or edit it, go https://regex101.com/r/7o2fyy Relative path are not supported The goal is to catch what "Look like" a path. See the limitations UNC path and prefix path like //./], [//?/] or [//./UNC/] are allowed some url path like [file:///C:/] or [file://] are allowed Catch path quoted with ["] and [']. But these quotes are include with the catch Quoted path is not concerned by limitations Limitations : (only unquoted path) [dot] and [space] is allowed, but not in a row [dot+space] or [space+dot at end of file name isn't catched INSIDE A NAME FILE (or last directory if it is a path to a directory) : [comma] is not supported (it stop the catch) after a first [dot], any [space] stop the catch after a [space], catch is stoped if next character is not a [letter], [digit] or [-] so, double [space] stop the catch Compatibility compatible PCRE, PCRE2 AutoHotkey : don't forget to escape "%" in "`%" /!\ Powershell and .Net /!\\ : this regex need some modification to be interpreted by powershell. You have to replace each (?&CapturGroupName) by \k. Use this powershell code to do this replacement : ` $powershellRegex = @' [Put here the regex to replace (?&CapturGroupName) with \k] '@ -replace '\(\?&(\w+)\)', '\k' ` This example code must return : [Put here the regex to replace \k with \k]
Submitted by nitrateag

Community Library Entry

0

Regular Expression
Created·2022-10-29 15:30
Flavor·Python

r"
(?P<field_with_params>[^{ }]+(?P<parenth_open>\()(?P<keyword>[^\(\s]\w+)\s?(?P<colon>\:)\s?(?P<value>(?P<list_open>\[?).+?(?P<list_close>\]?))\s?(?P<parenth_close>\)))|(?P<BEGIN>^\{)|(?P<open>\{)|(?P<END>\}$)|(?P<close>\})|(?P<fragment>(?P<dots>\.{3})\s*?(?P<on>on)\s+?(?P<frag_field>\w+))|(?P<parent_field>(?!(?P=field_with_params)|(?P=fragment))\w+)(?=\s*?\{)|(?P<child_field>(?!(?P=field_with_params)|(?P=fragment))\w+)
"
gm
Open regex in editor

Description

Parse Graphql queries

Changelog (versions):

  1. Initial
  2. Version 2 is much improved and intended to integrate well with customized highlighting with the help of the awesome Rich library.
  3. Bug fixes and added rich example.
  4. Bugfixes and now the regex is actually recognizing the different parts of field_with_params. And an improved example to go with that.

Todo (maybe):

  • Improve the beginning, opening, closing and ending curly bracket recognition with better support for malformed queries and make sure there's only one BEGIN and one END in situations where newlines are present.
  • Also differentiate between arbitrary text and actual graphql query language content. For example, the string "asdf" is currently recognized and categorized as a child_field when it shouldn't be recognized at all.

Version 4

def pretty_query(query_string: str) -> str:
    import re

    from rich.console import Console
    from rich.highlighter import JSONHighlighter
    from rich.theme import Theme, DEFAULT_STYLES

    # this is a string, not a tuple
    field_with_params_rgx = (
        r'(?P<field_with_params>[^{ }]+' # fields with parameters
        r'(?P<parenth_open>\()'          # opening parenthesis
        r'(?P<keyword>[^\(\s]\w+)\s?'    # keywords and colons
        r'(?P<colon>\:)\s?'              # keywords and colons
        r'(?P<value>'                    # parameter values
        r'(?P<list_open>\[?).+?'         # opening square bracket
        r'(?P<list_close>\]?))\s?'       # closing square bracket
        r'(?P<parenth_close>\)))'        # closing parenthesis
    )

    regexes = [
        field_with_params_rgx,
        r'(?P<BEGIN>^\{)|(?P<open>\{)|(?P<END>\}$)|(?P<close>\})',                  # curly brackets
        r'(?P<fragment>(?P<dots>\.{3})\s*?(?P<on>on)\s+?(?P<frag_field>\w+))',      # fragments
        r'(?P<parent_field>(?!(?P=field_with_params)|(?P=fragment))\w+)(?=\s*?\{)', # parent fields
        r'(?P<child_field>(?!(?P=field_with_params)|(?P=fragment))\w+)',            # child fields
    ]

    indent = 2
    count = 0
    parts = []

    for x in re.finditer('|'.join(rgx for rgx in regexes), query_string):
        data = x.groupdict()
        string = ''

        BEGIN = data['BEGIN']
        open = data['open']
        parent_field = data['field_with_params'] or data['parent_field']
        child_field = data['child_field']
        fragment = data['fragment']
        close = data['close']
        END = data['END']


        if BEGIN:
            string += BEGIN
            count += indent

        if open:
            count += indent
            continue

        if parent_field:
            string += '{0: >{fill}}{value} {{'.format(' ', value=parent_field, fill=count)

        if child_field:
            string += '{0: >{fill}}{value}'.format(' ', value=child_field, fill=count)

        if fragment:
            string += '{0: >{fill}}{value} {{'.format(' ', value=fragment, fill=count)

        if close:
            count -= indent
            string += '{0: >{fill}}{value}'.format(' ', value=close, fill=count)

        if END:
            string += END
            count -= indent
        parts.append(string)

    class GQLHighlighter(JSONHighlighter):
        base_style = "gql."
        highlights = ['|'.join(rgx for rgx in regexes)] + JSONHighlighter.highlights

    theme = Theme({
        **{
            f'gql.{k}': DEFAULT_STYLES[f'json.{k}']
            for k in ['brace', 'bool_true', 'bool_false', 'null', 'number', 'str', 'key']
        },
        'gql.BEGIN': 'bold green',
        'gql.END': 'bold green',
        'gql.open': 'bold yellow',
        'gql.close': 'bold blue',
        'gql.field_with_params': 'bold blue',
        'gql.parent_field': 'bold white',
        'gql.child_field': 'italic green',
        'gql.fragment': 'bold yellow',
        'gql.dots': 'bold white',
        'gql.on': 'green',
        'gql.frag_field': 'bold magenta italic',
        'gql.parenth_open': 'blue',
        'gql.parenth_close': 'green',
        'gql.keyword': 'yellow',
        'gql.colon': 'blue',
        'gql.list_open': 'bold yellow',
        'gql.list_close': 'bold yellow',
        'gql.value': 'cyan',
    })

    console = Console(highlighter=GQLHighlighter(), theme=theme)

    console.print('\n'.join(parts))

    return '\n'.join(parts)
Submitted by iwconfig