Project

General

Profile

Scripting Regex » History » Version 57

Per Amundsen, 08/22/2018 01:41 AM

1 1 Per Amundsen
{{>toc}}
2
3 47 Per Amundsen
h1. Regular Expressions
4 1 Per Amundsen
5 54 Per Amundsen
"Regular expressions":https://en.wikipedia.org/wiki/Regular_expression is a powerful tool to help match text using a pattern, they can be used in many places such as searching log files, searching text-buffers, highlight matching and scripting, .
6 46 Per Amundsen
7
_See also [[$regex]], [[$regsub]],  [[$regsubex]],  [[$regml]]._
8
9
h1. Regular Expressions Engines
10
11 39 Per Amundsen
*As of 2.9 AdiIRC has built-in support for "PCRE2":https://github.com/ltrzesniewski/pcre-net expressions provided that "Visual C++ 2015 x86":https://download.microsoft.com/download/6/A/A/6AA4EDFF-645B-48C5-81CC-ED5963AEAD48/vc_redist.x86.exe is installed for 32 bit AdiIRC or "Visual C++ 2015 x64":https://download.microsoft.com/download/6/A/A/6AA4EDFF-645B-48C5-81CC-ED5963AEAD48/vc_redist.x64.exe is installed for 64 bit AdiIRC.*
12 1 Per Amundsen
13 49 Per Amundsen
AdiIRC will automatically use PCRE2 if available, although it can be disabled by typing *[[/setoption]] Misc UsePcre False*, in this case AdiIRC will fallback to .NET regular expressions.
14 36 Per Amundsen
15 43 Per Amundsen
The .NET regular expression engine is different from the PCRE engine which mIRC uses, some differences are converted from PCRE to .NET while others are not possible.
16 33 Per Amundsen
17 50 Per Amundsen
*Read more about PCRE2 regular expressions.*
18
19
http://www.regular-expressions.info/pcre2.html
20
http://www.regular-expressions.info/tutorial.html
21 51 Per Amundsen
22 44 Per Amundsen
*Read more about .NET regular expressions:*
23 13 Per Amundsen
24 45 Per Amundsen
http://regexhero.net/reference/
25 44 Per Amundsen
https://msdn.microsoft.com/en-us/library/hs600312%28v=vs.110%29.aspx
26 13 Per Amundsen
https://msdn.microsoft.com/en-us/library/az24scfc%28v=vs.110%29.aspx
27 42 Per Amundsen
http://www.regular-expressions.info/dotnet.html
28
29 1 Per Amundsen
h1. Modifiers
30
31
/g /G - Enables global match.
32 52 Per Amundsen
/i /I - Enables case in-sensitive match.
33 31 Per Amundsen
/S - Strips any [[Formatting_Text|control codes]] before matching ([[$hfind]] will ignore this). 
34 1 Per Amundsen
/s - Enables single line match.
35
/m /M /c /C - Enables multi line match.
36
/x /X - Eliminates unescaped white space from the pattern.
37 9 Per Amundsen
/U - Enables non greedy mode. (Tries to replace greedy patterns with non greedy patterns + > +?, * -> *?)
38 32 Per Amundsen
<notextile>/u - Enables UTF8 instead of ASCII regular expression.</notextile>
39 56 Per Amundsen
/F - Allow/include empty capture groups.
40 57 Per Amundsen
/E /D - TODO
41 1 Per Amundsen
42 34 Per Amundsen
h1. Differences between .NET and PCRE
43 1 Per Amundsen
44 53 Per Amundsen
When PCRE support is not available, AdiIRC translate some PCRE patterns into .NET patterns.
45 17 Per Amundsen
46 30 Per Amundsen
<notextile>(*UTF8)/(*UTF) -> Enables UTF8 instead of ASCII regular expression.</notextile>
47 6 Per Amundsen
<notextile>(?R) -> .*</notextile>
48
<notextile>(?2) -> .*</notextile>
49
<notextile>(?1) -> .*</notextile>
50 4 Per Amundsen
<notextile>++ -> +</notextile>
51 5 Per Amundsen
<notextile>[:alnum:] -> a-zA-Z0-9</notextile>
52
<notextile>[:alpha:] -> a-zA-Z</notextile>
53
<notextile>[:ascii:] -> \x00-\x7F</notextile>
54
<notextile>[:blank:] -> \s\t</notextile>
55
<notextile>[:cntrl:] -> \x00-\x1F\x7F</notextile>
56
<notextile>[:digit:] -> 0-9</notextile>
57
<notextile>[:graph:] -> \x21-\x7E</notextile>
58
<notextile>[:lower:] -> a-z</notextile>
59
<notextile>[:print:] -> \x20-\x7E</notextile>
60
<notextile>[:punct:] -> !"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~</notextile>
61
<notextile>[:space:] -> \s\t\r\n\v\f</notextile>
62
<notextile>[:upper:] -> A-Z</notextile>
63 8 Per Amundsen
<notextile>[:word:] - > A-Za-z0-9_</notextile>
64 5 Per Amundsen
<notextile>[:xdigit:] -> A-Fa-f0-9</notextile>
65
<notextile>\cc -> \x003</notextile>
66
<notextile>\co -> \x00F</notextile>
67
<notextile>\cb -> \x002</notextile>
68
<notextile>\x\{([A-Fa-f0-9]{1,4})\} -> \uXXXX</notextile>
69 24 Per Amundsen
<notextile>\Q \E tries to escapes all characters in between</notextile>
70 1 Per Amundsen
71
\K is not available in .NET, use (<=abc)d instead.
72
73 35 Per Amundsen
These have no .NET counterpart:
74 13 Per Amundsen
75 1 Per Amundsen
code (?{…})
76 25 Per Amundsen
recursive (R), (R1), (R&name)
77 1 Per Amundsen
define (DEFINE).
78
79 34 Per Amundsen
List of differences between .NET and PCRE https://stackoverflow.com/questions/3417644/translate-perl-regular-expressions-to-net