Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save error454/2895163 to your computer and use it in GitHub Desktop.
Save error454/2895163 to your computer and use it in GitHub Desktop.
Single-line version of pattern:
(?i)\b((?:http(?:s)?:(?:/{1,3}|[a-z0-9%])|[a-z0-9.\-]+[.][a-z]{2,4})(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\)){0,}(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))
Extended version of same pattern:
(?i) #Ignore Case
\b
( # Capture 1: entire matched URL
(?:
http(?:s)?: # http: and https: only
(?:
/{1,3} # 1-3 slashes
| # or
[a-z0-9%] # Single letter or digit or '%'
# (Trying not to match e.g. "URI::Escape")
)
| # or
[a-z0-9.\-]+[.][a-z]{2,4} # looks like domain name
)
(?: # Zero or more:
[^\s()<>]+ # Run of non-space, non-()<>
| # or
\(([^\s()<>]+|(\([^\s()<>]+\)))*\) # balanced parens, up to 2 levels
){0,}
(?: # End with:
\(([^\s()<>]+|(\([^\s()<>]+\)))*\) # balanced parens, up to 2 levels
| # or
[^\s`!()\[\]{};:'".,<>?«»“”‘’] # not a space or one of these punct char
)
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment