Which regular expression engine (flavor) does "Some Package" use? - regex

Unfortunately, the regex section of many manuals starts with a tutorial, and often leaves this question unanswered. If the answer for the package that brought you to this page is not below, please add it, in a direct and short format, with links if applicable.

PHP Regex flavors
1.) PCRE (Perl Compatible Regular Expressions)
preg* functions
PHP: PCRE - Manual, PCRE man pages, perlre
2.) POSIX ERE (Extended Regular Expressions)
ereg* functions -> DEPRECATED
PHP: ereg - Manual, man pages
3.) POSIX ERE with multibyte support
mb_ereg* functions
PHP: mb_ereg - Manual
Feel free to add further information.

Kate, and thus Kile, use the QRegExp class, which is PCRE-like, but not quite PCRE.

Nginx uses PCRE. For more information, see here.

Jedit uses java.util.regex from 4.3, and gnu.regexp before that.

Related

Replacing patterns with grep and regex

I was wondering if with grep and regex we can do something in the spirit of the following example:
Original text:
name_1_extratext
name_2_extratext
Target:
name_extratext_1
name_extratext_2
I am particularly interested in doing this within Vim. Thanks
#bohemian's comment about grep only doing matching also applies within Vim. "grep" and "regex" are not, or should not, be vague buzzwords you throw at a problem. They are tools that may or may not be adapted to the class of problem you are having and a large part of learning is acquiring the correct intuition for what tool to use in what case.
In Vim, what you want to do is a substitution. It doesn't involve grep at all but it definitely involves regular expressions.
In this specific case, you would do something like this:
:%s/\(.*\)\(_\d\+\)\(.*\)/\1\3\2
or this variant of #bohemian's answer:
:%s/_\([^_]\+\)_\(.*\)/_\2_\1/
or anything that works and makes sense to you, really. Ideally not something you copy/pasted from the internet but something you really understand.
Reference:
The :s command is introduced in chapter 10 of the user manual: :help 10.2, and further documented under :help :s.
The % range is also introduced chapter 10 of the user manual: :help 10.3, and further documented under :help :range.
Vim's own regular expression dialect is extensively documented under :help pattern.
grep doesn't "do" anything to what it matches; it only matches.
Use sed:
echo "name_1_extratext" | sed -E 's/_([^_]+)_(.*)/_\2_\1/'

What flavor of Regex does Visual Studio Code use?

Trying to search-replace in Visual Studio Code, I find that its Regex flavor is different from full Visual Studio. Specifically, I try to declare a named group with string (?<p>[\w]+) which works in Visual Studio but not in Visual Studio Code. It'll complain with the error Invalid group.
Apart from solving this specific issue, I'm looking for information about the flavor of Regexes in Visual Studio Code and where to find documentation about it, so I can help myself with any other questions I might stumble upon.
Full Visual Studio uses .NET Regular Expressions as documented here. This link is mentioned as the documentation for VS Code elsewhere on Stackoverflow, but it's not.
Rust Regex in the Find/Replace in Files Sidebar
Rob Lourens of MSFT wrote that the file search uses Rust regex. The Rust language documentation describes the syntax.
JavaScript Regex in the Find/Replace in File Widget
Alexandru Dima of MSFT wrote that the find widget uses JavaScript regex. As Wicktor commented, ECMAScript 5's documentation describes the syntax. So does the MDN JavaScript Regular Expression Guide.
Test the Difference
The find in files sidebar does not support (?=foobar) whereas the find in file widget does support that lookahead syntax.
Regarding Find/Replace with Groups
To find/replace with groups, use parentheses () to group and $1, $2, $3, $n to replace.
Here is an example.
Before:
After:
Shaun's answer is still correct, however to add an update, recently VS Code added the option to opt into using the Perl based PCRE2 engine. You can enable this through your settings config.
This allows you to perform more advanced regex operations like lookaheads and backreferences. But as noted below, the regex still has to be valid JavaScript regex.
VS Code does support regular expression searches, however,
backreferences and lookaround aren't supported by default. But you can
enable these with the setting search.usePCRE2. This configures ripgrep
to use the PCRE2 regex engine. While PCRE2 supports many other
features, we only support regex expressions that are still valid in
JavaScript, because open editors are still searched using the editor's
JavaScript-based search.
And for a bonus if you ended up here trying to do multi line searches, VS Code recently added that feature as well!
I've found newer information (July 22, 2020) about it.
IllusionMH left the following comment in Github:
ripgrep (compatible with PCRE2) is already used for Find in files
functionality (for not open editors) and JS engine used only for open
editors.
Which regex engine does vscode use? It is now a little more nuanced than previously. The best source is this vscode wiki: Github wiki: Notes on Regular Expression Support:
[At top of document]
This document applies to search (CMD+SHIFT+F/CTRL+SHIFT+F) and
quickopen (CMD+P/CTRL+P). By default, VS Code uses the ripgrep tool to
drive search.
...
[At end of document]
Text search uses two different sets of regular expression engines. The
workspace is searched using ripgrep, which will use the Rust regex
engine, and will fallback to PCRE2 if the regex fails to parse in the
Rust regex engine. The Rust regex engine doesn't support some features
like backreferences and look-around, so if you use those features,
PCRE2 will be used. Open files are searched using a JS regex in the
editor itself. Most of the time, you don't need to worry about this,
but you may see an inconsistency in how some complex regexes are
interpreted, and this can be an explanation. Especially when you see a
regex interpreted one way when a file is open, and another way when it
is not. During a Replace operation, each file will be opened in turn,
and the search query will be run as a JS regex.
Another potential issue is how newlines are handled between ripgrep
and the editor. The editor normalizes newlines, so that you can match
both CRLF and LF line endings just with \n. It's actually not possible
to match \r explicitly in the editor because it is normalized away.
When searching in the workspace, VS Code tries to rewrite a regex so
that \n will match CRLF. But \r\n or \s\n will also match CRLF in
closed files, but not in open files.
Two key points: (1) newlines are handled specially and (2) backrefereences and look-arounds are supported despite using the Rust regex engine - if your regex has a look-around or backreference in it PCRE2 will be used instead of the Rust engine.
More on lookarounds
The Find Widget (Ctrl+F) used for finding within the active editor only supports all lookarounds (lookahead and lookbehind) and those lookarounds can be non-fixed-length. So this will work in the Find Widget: (?<!blah.*).
In a search across files (Ctrl+Shift+F) non-fixed-length lookbehinds DO NOT WORK. Lookaheads can be fixed or non-fixed-length. But non-fixed-length positive or negative lookbehinds do not work and you will get an error message below the search input box: Regex parse error: lookbehind assertion is not fixed length which may not appear until you actually try to run the search.

What regular expression engine is used by default in LoadRunner 11.52?

I keep trying to find an online regular expression checker to use with web_reg_save_param_regexp but no joy. What RegEx engine is LoadRunner 11.52 using?
It looks to be some variant of Perl.
In LoadRunner we use this: http://www.pcre.org/
Thanks,
Boris
This article suggests that the author is using http://rubular.com/ to test his web_reg_save_param_regexp, suggesting that it's likely PCRE (at least partly implemented).
A great PCRE checker is http://regex101.com.

Equivalent of URL parsing PCRE regex for .NET

There's a PCRE regex for extracting URLs posted here: http://daringfireball.net/2009/11/liberal_regex_for_matching_urls
\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))
What would need to be changed to make it compatible with regex in .NET?
Looking at in Regexbuddy now. So far, the only issue is the [:punct:] - doesn't look like .NET supports POSIX character classes.
EDIT - double clicking on the offender gave me this:
\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^\p{P}\s]|/)))

How can test I regular expressions using multiple RE engines? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Closed 8 years ago.
Locked. This question and its answers are locked because the question is off-topic but has historical significance. It is not currently accepting new answers or interactions.
How can I test the same regex against different regular expression engines?
The most powerful free online regexp testing tool is by far http://regex101.com/ - lets you select the RE engine (PCRE, JavaScript, Python), has a debugger, colorizes the matches, explains the regexp on the fly, can create permalinks to the regex playground.
Other online tools:
http://www.rexv.org/ - supports PHP and Perl PCRE, Posix, Python, JavaScript, and Node.js
http://refiddle.com/ - Inspired by jsfiddle, but for regular expressions. Supports JavaScript, Ruby and .NET expressions.
http://regexpal.com/ - powered by the XRegExp JavaScript library
http://www.rubular.com/ - Ruby-based
Perl Regex Tutor - uses PCRE
Windows desktop tools:
The Regex Coach - free Windows application
RegexBuddy recommended by most, costs US$ 39.95
Jeff Atwood [wrote about regular expressions]( post:).
Other tools recommended by SO users include:
http://www.txt2re.com/ Online free tool to generate regular expressions for multiple language (#palmsey another thread)
The Added Bytes Regular Expressions Cheat Sheet (#GateKiller another thread)
http://regexhero.net/ - The Online .NET Regular Expression Tester. Not free.
RegexBuddy
I use Expresso (www.ultrapico.com). It has a lot of nice features for the developer. The Regulator used to be my favorite, but it hasn't been updated in so long and I constantly ran into crashes with complicated RegExs.
Here are some for the Mac: (Note: don't judge the tools by their websites)
RegExhibit - My Favorite, powerful and easy
Reggy - Simple and Clean
RegexWidget - A Dashboard Widget for quick testing
If you are an Emacs user, the command re-builder lets you type an Emacs regex and shows on the fly the matching strings in the current buffer, with colors to mark groups. It's free as Emacs.
Rubular is free, easy to use and looks nice.
RegexBuddy is a weapon of choice
I use the excellent and free Rad Software Regular Expression Designer.
If you just want to write a regular expression, have a little help with the syntax and test the RE's matching and replacing then this fairly light-footprint tool is ideal.
couple of eclipse plugins for those using eclipse,
http://www.brosinski.com/regex/
http://www.bastian-bergerhoff.com/eclipse/features/web/QuickREx/toc.html
Kodos of course. Cause it's Pythonic. ;)
RegexBuddy is great!!!
I agree on RegExBuddy, but if you want free or when I'm working somewhere and not on my own system RegExr is a great online (Flash) tool that has lots of pre-built regex segments to work with and does real-time pattern matching for your testing.
In the standard Python installation there is a "Tools/scripts" directory containing redemo.py.
This creates an interactive Tkinter window in which you can experiment with regexs.
In the past I preferred The Regex Coach for its simplistic layout, instantaneous highlighting and its price (free).
Every once in awhile though I run into an issue with it when trying to test .NET regular expressions. For that, it turns out, it's better to use a tool that actually uses the .NET regular expression engine. That was my whole reason to build Regex Hero last year. It runs in Silverlight, and as such, runs off of the .NET Regex Class library directly.
Regexbuddy does all this. http://www.regexbuddy.com/
see the accepted answer to this question: Learning Regular Expressions
I'll add to the vote of Reggy for the Mac, gonna try out some of the other ones that Joseph suggested and upvote that post tomorrow when my limit gets reset.
for online: http://regexpal.com/
for desktop: The Regex Coach
+1 For Regex Coach here. Free and does the job really well.
http://www.weitz.de/regex-coach/
I am still a big The Regulator fan.
There are some stability problems but these can be fixed by disableing the Intellisense. It gets mad with some expressions and typos in building an expression.
Would love it if Roy Osherove updated, but looks like he is busy with other things.
I like to use this online one:
http://www.cuneytyilmaz.com/prog/jrx/
Of course, it'll be javascript regexp, but I've never yet done anything clever enough to notice the difference.
How much is your time worth? Pay the $40 and get RegexBuddy. I did, and I even upgraded from 2.x version to 3.x. It has paid for itself many times over.
I personally like the Regular Expression Tester.
It's a free firefox plugin, so always on!
Also this regex plugin can be useful for eclipse and idea users.
I like http://regexhero.net/tester/ a lot
Check out Regex Master which is free and open source regular expression tester
This regex tester able to test javascript, php and python
http://www.piliapp.com/regex-tester/
RegExBuddy so far I concur with and endorse.
RegExr for testing with the Actionscript 3 (whichever standard that may be)
http://rgx-extract-replace.appspot.com
has the functionality to enlist the captured regex groups formatted in columns and
optionally can replace the matched patterns in the input text.