blob: 10e04dcf80fae2509643b98c5e0a170c4582d68a [file] [log] [blame]
<tests>
<simple>
<test>
<pattern>|</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(|\$.*)\.class</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>abc</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>multiple words of text</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>ab|cd</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a*</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>ab*c</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>ab*bc</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>ab+bc</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>ab?bc</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>ab?c</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a.c</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a.*c</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>*a</pattern>
<expected>ERR</expected>
</test>
<test verify="false" info="true">
<pattern><![CDATA[a<weak_warning descr="Single repetition">{1}</weak_warning>]]></pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a{}</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>a{</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>a}</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a{1,}</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a{1,2}</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a{1,foo}</pattern>
<expected>ERR</expected>
</test>
<test info="true" verify="false">
<pattern><![CDATA[<weak_warning descr="Redundant character escape">\;</weak_warning>]]></pattern>
<expected>OK</expected>
</test>
</simple>
<quantifiers>
<test>
<pattern>a?</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a+</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a*</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a??</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a+?</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a*?</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a?+</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a++</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a*+</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a**</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>a{2}</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a{1,2}</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a{2,1}</pattern>
<expected>ERR</expected>
</test>
<test verify="false" info="true">
<pattern><![CDATA[a<weak_warning descr="Repetition range replaceable by '?'">{0,1}</weak_warning>]]></pattern>
<expected>OK</expected>
</test>
<test verify="false" info="true">
<pattern><![CDATA[a<weak_warning descr="Repetition range replaceable by '+'">{1,}</weak_warning>]]></pattern>
<expected>OK</expected>
</test>
<test verify="false" info="true">
<pattern><![CDATA[a<weak_warning descr="Repetition range replaceable by '*'">{0,}</weak_warning>]]></pattern>
<expected>OK</expected>
</test>
<test verify="false" info="true">
<pattern><![CDATA[a<weak_warning descr="Single repetition">{1}</weak_warning>]]></pattern>
<expected>OK</expected>
</test>
<test verify="false" info="true">
<pattern><![CDATA[a<weak_warning descr="Fixed repetition range">{3,3}</weak_warning>]]></pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a{</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>a}</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a{}</pattern>
<expected>ERR</expected>
</test>
</quantifiers>
<charclasses>
<test>
<pattern>a[bc]d</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a[b-d]e</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a[b-d]</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a[b-a]</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>a[-b]</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a[b-]</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>[a-[b]]</pattern>
<expected jdk="OK">OK</expected>
</test>
<test>
<pattern>a[b&amp;&amp;[cd]]</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a[b-&amp;&amp;[cd]]</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>a[b&amp;&amp;-]</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a[b&amp;&amp;-b]</pattern>
<expected jdk="OK">OK</expected>
</test>
<test>
<pattern>[&amp;&amp;]</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>a[b&amp;&amp;c&amp;&amp;d]</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a[b&amp;&amp;c&amp;&amp;d-e&amp;&amp;f]</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a[a[b][c]]</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>[a-[]]</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>[a-[b</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>[a[^b]]</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a[a[b[c]][d]]</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a[\t--]</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a[\t--]</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a[\t---]</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a[-]?c</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a[</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>a]</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>[a-[</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>a[]]</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a[^bc]d</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a[^bc]</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a[]b</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>[abhgefdc]ij</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>[a-zA-Z_][a-zA-Z0-9_]*</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>([a-c]+?)c</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>([ab]*?)b</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>([ab]*)b</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>([ab]??)b</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(c[ab]?)b</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(c[ab]??)b</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(c[ab]*?)b</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a[bcd]+dcdcde</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>[k]</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a[bcd]*dcdcde</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>[^ab]*</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a[.]b</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a[+*?]b</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a[\p{IsDigit}\p{IsAlpha}]b</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>[\p{L}&amp;&amp;[^\p{Lu}]]</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a\p</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>a\p{}</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>a\p}</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>a\p{123}</pattern>
<expected>ERR</expected>
</test>
<test verify="false">
<pattern><![CDATA[a\p{<error descr="Character family name expected">*</error>}b]]></pattern>
<expected>OK</expected>
</test>
<test verify="false">
<pattern><![CDATA[[<warning descr="Redundant character range">\w-\w</warning>]]]></pattern>
<expected>OK</expected>
</test>
<test>
<pattern>[a-\w]</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>(?x)abc #foo \q bar
# foo
(?-xi)xyz(?i:ABC)</pattern>
<expected>OK</expected>
</test>
</charclasses>
<groups>
<test warning="false">
<pattern>()ef</pattern>
<expected>OK</expected>
</test>
<test warning="false">
<pattern>()*</pattern>
<expected>OK</expected>
</test>
<test verify="false">
<pattern><![CDATA[<warning descr="Empty group">()</warning>]]></pattern>
<expected>OK</expected>
</test>
<test verify="false">
<pattern><![CDATA[<warning descr="Empty group">(|)</warning>]]></pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(*)b</pattern>
<expected>ERR</expected>
</test>
<test verify="false">
<pattern><![CDATA[<warning descr="Redundant group nesting">((a))</warning>]]></pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(a)b(c)</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(a*)*</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(a*)+</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(a|)*</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(ab|cd)e</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(.*)c(.*)</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>\((.*), (.*)\)</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a(bc)d</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>([abc])*d</pattern>
<expected>OK</expected>
</test>
<test warning="false">
<pattern>((((((((((a)))))))))</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>([abc])*bcd</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(a|b)c*d</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a([bc]*)c*</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>((a)(b)c)(d)</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(ab|a)b*c</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(ab|ab*)bc</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(a|b|c|d|e)f</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a([bc]*)(c*d)</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a([bc]+)(c*d)</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a([bc]*)(c+d)</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(a+|b)*</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(a+|b)+</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(a+|b)?</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(^*</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>)(</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>(?i:*)</pattern>
<expected>ERR</expected>
</test>
</groups>
<escapes>
<test>
<pattern>\q</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>\#</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a\</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>a\(b</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a\(*b</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a\\b</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>\u004a</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>\0123</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>\0</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>\x4a</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>[\x4a-\x4b]</pattern>
<expected>OK</expected>
</test>
<test verify="false">
<pattern><![CDATA[[<warning descr="Redundant character range">a-a</warning>]]]></pattern>
<expected>OK</expected>
</test>
<test>
<pattern>[\x4a-\x3f]</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>a\Qabc?*+.))]][]\Eb</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(a\Qabc?*+.))]][]\Eb)</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>[\Qabc?*+.))]][]\E]</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a\Qabc?*+.))]][]\E)</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>\Q\j\E</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>\c0</pattern>
<expected>OK</expected>
</test>
</escapes>
<anchors>
<test>
<pattern>^*</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>$*</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>^abc</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>^abc$</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>abc$</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>^</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>$</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>$b</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>^(ab|cd)e</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>^a(bc+|b[eh])g|.h$</pattern>
<expected>OK</expected>
</test>
</anchors>
<namedchars>
<test>
<pattern>a*b\s+c</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>\d+</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>^\p{javaJavaIdentifierStart}+\p{javaJavaIdentifierPart}+$</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>\p{IsDigit}\p{IsAlpha}</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>\p{InLATIN_1_SUPPLEMENT}</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>[a-e]?d\\e</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>((\w+)/)*(\w+)</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>\p{Digit}+</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>[:xdigit:]+</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>\p{unknown}+</pattern>
<expected>ERR</expected>
</test>
</namedchars>
<backrefs>
<test>
<pattern>(ac*)c*d[ac]*\1</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(.)=\1</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>([ab])=\1</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>([ab]+)=\1</pattern>
<expected>OK</expected>
</test>
<test verify="false">
<pattern>([ab]+)=\2</pattern>
<expected>ERR</expected>
</test>
<test verify="false">
<pattern>([ab]+)=\3</pattern>
<expected>ERR</expected>
</test>
<test verify="false">
<pattern><![CDATA[([ab]+=<warning descr="Backreference is nested into the capturing group it refers to">\1</warning>)]]></pattern>
<expected>OK</expected>
</test>
</backrefs>
<complex>
<test>
<pattern>z(\w\s+(?:\w\s+\w)+)z</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)*</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>((?:[hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)*</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?[a-zA-Z0-9\-]+(?:\.[a-zA-Z0-9\-]+)*</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(?:([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)*</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>^(?:([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)*$</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>^(?:(?:[hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?[a-zA-Z0-9\-]+(?:\.[a-zA-Z0-9\-]+)*$</pattern>
<expected>OK</expected>
</test>
</complex>
<incomplete>
<test>
<pattern>abc\</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>abc[\</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>abc\x</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>abc\x1</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>abc\u</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>abc\u22</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>\Qabc</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>\Q</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>\E</pattern>
<expected>ERR</expected>
</test>
</incomplete>
<regressions>
<!-- caused NPE in Annotator -->
<test>
<pattern>(</pattern>
<expected>ERR</expected>
</test>
<!-- broke by TokenType modifications -->
<test>
<pattern>[^^]</pattern>
<expected>OK</expected>
</test>
<!-- caused "Probably a bug: eating token without its type checking" errors in Diana -->
<test verify="false">
<pattern><![CDATA[a<error>)</error><error descr="Pattern expected">b</error>]]></pattern>
<expected>OK</expected>
</test>
<test verify="false">
<pattern><![CDATA[\s*@return(?:s)?\s*(?:(?:\{|:)?\s*(?(<error descr="Group name or number expected">[</error><error descr="Pattern expected">^</error><error descr="Pattern expected">\</error>s<error descr="Pattern expected">\</error>}<error descr="Pattern expected">]</error><error descr="Dangling metacharacter">+</error><error descr="Unmatched closing ')'">)</error><error descr="Pattern expected">\</error>s<error descr="Dangling metacharacter">*</error><error descr="Pattern expected">\</error>}<error descr="Dangling metacharacter">?</error><error descr="Pattern expected">\</error>s<error descr="Dangling metacharacter">*</error><error descr="Unmatched closing ')'">)</error><error descr="Dangling metacharacter">?</error><error descr="Pattern expected">(</error><error descr="Pattern expected">.</error><error descr="Dangling metacharacter">*</error><error descr="Unmatched closing ')'">)</error>]]></pattern>
<expected>OK</expected>
</test>
</regressions>
<test>
<pattern>abc)</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>(abc</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>a+b+c</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a**</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>a++</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>ab*</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>abcd*efg</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a|b|c|d|e</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(bc+d$|ef*g.|h?i(j|k))</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a*(b*c*)</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a?b+c*</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>i am a green (giant|man|martian)</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(wee|week)(knights|knight)</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(a.*b)(a.*b)</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(\s*\w+)?</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(?:a)</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(?:\w)</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(?:\w\s\w)+</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(a\w)(?:,(a\w))+</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>abc.*?x+yz</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>abc.+?x+yz</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a.+?(c|d)</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a.+(c|d)</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>a+?b+?c+?</pattern>
<expected>OK</expected>
</test>
<real-life>
<test>
<pattern>x:found="(true|false)"</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(?:\s)|(?:/\*.*\*/)|(?://[^\n]*)</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>((?:\p{Alpha}\:)?[0-9 a-z_A-Z\-\\./]+)</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>^[\w\+\.\-]{2,}:</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>#(.*)$</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>^(([^:]+)://)?([^:/]+)(:([0-9]+))?(/.*)</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>(([^:]+)://)?([^:/]+)(:([0-9]+))?(/.*)</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>usd [+-]?[0-9]+.[0-9][0-9]</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>\b(\w+)(\s+\1)+\b</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>.*?(&lt;(error|warning|info)(?: descr="((?:[^"\\]|\\")*)")?(?: type="([0-9A-Z_]+)")?(?: foreground="([0-9xa-f]+)")?(?: background="([0-9xa-f]+)")?(?: effectcolor="([0-9xa-f]+)")?(?: effecttype="([A-Z]+)")?(?: fonttype="([0-9]+)")?(/)?>)(.*)</pattern>
<expected>OK</expected>
</test>
</real-life>
<bug id="IDEADEV-29851">
<test>
<pattern>[{][\w\.]*[}]</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>[a-z0-9!\#$%&amp;'*+/=?^_`{|}~-]+</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>[\{]</pattern>
<expected>OK</expected>
</test>
<test>
<pattern>{</pattern>
<expected>ERR</expected>
</test>
<test>
<pattern>\{</pattern>
<expected>OK</expected>
</test>
</bug>
<bug id="IDEADEV-35269">
<test>
<pattern><![CDATA[(<=\s)-{3,}(?>\s)]]></pattern>
<expected>OK</expected>
</test>
</bug>
<bug id="IDEA-25680">
<test info="true">
<pattern>(?x)a\ b\ c</pattern>
<expected>OK</expected>
</test>
<test verify="false" info="true">
<pattern><![CDATA[a<weak_warning descr="Redundant character escape">\ </weak_warning>b]]></pattern>
<expected>OK</expected>
</test>
</bug>
<bug id="IDEA-52291">
<test>
<pattern>(^|\.)\*(?=(\.|$))</pattern>
<expected>OK</expected>
</test>
</bug>
</tests>