
Inline adoc files when they are included exactly once. Also fix language tags because this inlining gives us better information on what language the code is written in.
42 lines
929 B
Plaintext
42 lines
929 B
Plaintext
== Why is this an issue?
|
|
|
|
Characters like ``++'é'++`` can be expressed either as a single code point or as a cluster of the letter ``++'e'++`` and a combining accent mark. Without the ``++CANON_EQ++`` flag, a regex will only match a string in which the characters are expressed in the same way.
|
|
|
|
|
|
=== Noncompliant code example
|
|
|
|
[source,java]
|
|
----
|
|
String s = "e\u0300";
|
|
Pattern p = Pattern.compile("é|ë|è"); // Noncompliant
|
|
System.out.println(p.matcher(s).replaceAll("e")); // print 'è'
|
|
----
|
|
|
|
|
|
=== Compliant solution
|
|
|
|
[source,java]
|
|
----
|
|
String s = "e\u0300";
|
|
Pattern p = Pattern.compile("é|ë|è", Pattern.CANON_EQ);
|
|
System.out.println(p.matcher(s).replaceAll("e")); // print 'e'
|
|
----
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
=== Message
|
|
|
|
Use the CANON_EQ flag with this pattern
|
|
|
|
|
|
=== Highlighting
|
|
|
|
the string of the pattern
|
|
|
|
|
|
endif::env-github,rspecator-view[]
|