Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8158482

regex UNICODE_CHARACTER_CLASS flag cannot be disabled with an embedded flag expression

XMLWordPrintable

    • b122
    • generic
    • generic
    • Verified

      FULL PRODUCT VERSION :
      java version "9-ea"
      Java(TM) SE Runtime Environment (build 9-ea+120)
      Java HotSpot(TM) 64-Bit Server VM (build 9-ea+120, mixed mode)

      A DESCRIPTION OF THE PROBLEM :
      The regular expression UNICODE_CHARACTER_CLASS flag cannot be disabled with an embedded flag expression.



      Running the program above produces the following exception.

      Exception in thread "main" java.util.regex.PatternSyntaxException: Unknown inline modifier near index 3
      (?-U)
         ^
      at java.util.regex.Pattern.error(java.base@9-ea/Pattern.java:1990)
      at java.util.regex.Pattern.group0(java.base@9-ea/Pattern.java:3014)
      at java.util.regex.Pattern.sequence(java.base@9-ea/Pattern.java:2086)
      at java.util.regex.Pattern.expr(java.base@9-ea/Pattern.java:2031)
      at java.util.regex.Pattern.compile(java.base@9-ea/Pattern.java:1753)
      at java.util.regex.Pattern.<init>(java.base@9-ea/Pattern.java:1402)
      at java.util.regex.Pattern.compile(java.base@9-ea/Pattern.java:1070)
      at EmbeddedFlag.main(EmbeddedFlag.java:8)

      I expected the exception not be thrown and the program to complete without problems.


      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Compile and run the example program.


      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      Program outputs true.
      ACTUAL -
      An exception is thrown.

      ERROR MESSAGES/STACK TRACES THAT OCCUR :
      Exception in thread "main" java.util.regex.PatternSyntaxException: Unknown inline modifier near index 9
      (?U)\w(?-U)\w
               ^
      at java.util.regex.Pattern.error(java.base@9-ea/Pattern.java:1990)
      at java.util.regex.Pattern.group0(java.base@9-ea/Pattern.java:3014)
      at java.util.regex.Pattern.sequence(java.base@9-ea/Pattern.java:2086)
      at java.util.regex.Pattern.expr(java.base@9-ea/Pattern.java:2031)
      at java.util.regex.Pattern.compile(java.base@9-ea/Pattern.java:1753)
      at java.util.regex.Pattern.<init>(java.base@9-ea/Pattern.java:1402)
      at java.util.regex.Pattern.compile(java.base@9-ea/Pattern.java:1070)
      at EmbeddedFlag.main(EmbeddedFlag.java:8)

      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      import java.util.regex.Pattern;
      class EmbeddedFlag {
      public static void main(String[] args) {
      final Pattern pattern = Pattern.compile("(?U)\\w(?-U)\\w");
      System.out.println(!pattern.matcher("üü").matches());
      }
      }
      ---------- END SOURCE ----------

            sherman Xueming Shen
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: