Package java.util.regex

Examples of java.util.regex.MatchResult


        int lastx = 0;

        while (matcher.find())
        {
            MatchResult matchResult = matcher.toMatchResult();

            int start = matchResult.start();
            int end = matchResult.end();

            builder.append(name.substring(lastx, start + 1));
            builder.append("-");
            // TODO: An acronym (such as "URL") should not be lower cased here.
            builder.append(name.substring(end - 1, end).toLowerCase());
View Full Code Here


      Matcher m = p.matcher(source);
      m.find();

      StringScanner scanner = new StringScanner(source);
      MatchResult result = scanner.scan(p);

      // Verify group match returned are the same. g 1/2 should be null
      Assert.assertEquals(null, m.group(1));
      Assert.assertEquals(null, m.group(2));
      Assert.assertEquals(m.group(), result.group());
      Assert.assertEquals(m.group(1), result.group(1));
      Assert.assertEquals(m.group(2), result.group(2));

      // Verify group start returned are the same. g 1/2 should be -1
      Assert.assertEquals(-1, m.start(1));
      Assert.assertEquals(-1, m.start(2));
      Assert.assertEquals(m.start(), result.start());
      Assert.assertEquals(m.start(1), result.start(1));
      Assert.assertEquals(m.start(2), result.start(2));

      // Verify group end returned are the same. g 1/2 should be -1
      Assert.assertEquals(-1, m.end(1));
      Assert.assertEquals(-1, m.end(2));
      Assert.assertEquals(m.end(), result.end());
      Assert.assertEquals(m.end(1), result.end(1));
      Assert.assertEquals(m.end(2), result.end(2));
   }
View Full Code Here

    {
        Scanner scanner = new Scanner( new ByteArrayInputStream( message.getBytes() ) );
        String foundString = scanner.findWithinHorizon( ".*line (\\d+):(\\d+): *([^\\n]*).*", message.length() ); //$NON-NLS-1$
        if ( foundString != null )
        {
            MatchResult result = scanner.match();
            if ( result.groupCount() == 3 )
            {
                ExceptionMessage exceptionMessage = new ExceptionMessage();
                exceptionMessage.lineNumber = result.group( 1 );
                exceptionMessage.columnNumber = result.group( 2 );
                exceptionMessage.cause = result.group( 3 );

                scanner.close();
                return exceptionMessage;
            }

View Full Code Here

   {
      State state = State.initial;

      while (source.hasMore())
      {
         MatchResult m = null;
         switch (state)
         {
         case initial:
            if ((m = source.scan(COMMENT)) != null)
            {
               encoder.textToken(m.group(), TokenType.comment);
            }
            else if ((m = source.scan(SPACE)) != null)
            {
               encoder.textToken(m.group(), TokenType.space);
            }
            else if ((m = source.scan(KEY)) != null)
            {
               encoder.textToken(m.group(), TokenType.key);
            }
            else if ((m = source.scan(OPERATOR)) != null)
            {
               encoder.textToken(m.group(), TokenType.operator);
               state = State.value;
            }
            else
            {
               encoder.textToken(source.next(), TokenType.error);
            }
            break;
         case value:
            if ((m = source.scan(SPACE)) != null)
            {
               encoder.textToken(m.group(), TokenType.space);
            }
            else if ((m = source.scan(FLOAT)) != null)
            {
               encoder.textToken(m.group(), TokenType.float_);
               state = State.initial;
            }
            else if ((m = source.scan(NUMBER)) != null)
            {
               String match = m.group();
               if ((m = source.scan(FLOAT)) != null)
               {
                  match = match + m.group();
                  encoder.textToken(match, TokenType.float_);
               }
               else
               {
                  encoder.textToken(match, TokenType.integer);
               }
               state = State.initial;
            }
            else if ((m = source.scan(BOOLEAN)) != null)
            {
               encoder.textToken(m.group(), TokenType.value);
               state = State.initial;
            }
            else if ((m = source.scan(UNICODE_ESCAPE)) != null)
            {
               encoder.textToken(m.group(), TokenType.value);
               state = State.initial;
            }
            else if ((m = source.scan(VALUE)) != null)
            {
               encoder.textToken(m.group(), TokenType.value);
               if (!m.group().endsWith("\\"))
               {
                  state = State.initial;
               }
            }
            else
View Full Code Here

      boolean class_name_follows = false;
      boolean last_token_dot = false;

      while (source.hasMore())
      {
         MatchResult m = null;

         switch (state)
         {
         case initial:
            if ((m = source.scan(SPACE)) != null)
            {
               encoder.textToken(m.group(), TokenType.space);
               continue;
            }
            else if ((m = source.scan(COMMENT)) != null)
            {
               encoder.textToken(m.group(), TokenType.comment);
               continue;
            }
            else if (package_name_expected != null && (m = source.scan(PACKAGE)) != null)
            {
               encoder.textToken(m.group(), package_name_expected);
            }
            else if ((m = source.scan(IDENT_OR_ARRAY_TYPE)) != null)
            {
               String match = m.group();
               TokenType kind = IDENT_KIND.lookup(match);
               if (last_token_dot)
               {
                  kind = TokenType.ident;
               }
               else if (class_name_follows)
               {
                  kind = TokenType.class_;
                  class_name_follows = false;
               }
               else
               {
                  if ("import".equals(match))
                  {
                     package_name_expected = TokenType.include;
                  }
                  else if ("package".equals(match))
                  {
                     package_name_expected = TokenType.namespace;
                  }
                  else if ("class".equals(match) || "interface".equals(match))
                  {
                     class_name_follows = true;
                  }
               }
               encoder.textToken(match, kind);
            }
            else if ((m = source.scan(OPERATORS)) != null)
            {
               encoder.textToken(m.group(), TokenType.operator);
            }
            else if ((m = source.scan(SEMI_COLON)) != null)
            {
               package_name_expected = null;
               encoder.textToken(m.group(), TokenType.operator);
            }
            else if ((m = source.scan(OPEN_BRAKCET)) != null)
            {
               class_name_follows = false;
               encoder.textToken(m.group(), TokenType.operator);
            }
            else if ((m = source.check(ANY_WORD)) != null)
            {
               if ((m = source.scan(HEX)) != null)
               {
                  encoder.textToken(m.group(), TokenType.hex);
               }
               else if ((m = source.scan(OCTAL)) != null)
               {
                  encoder.textToken(m.group(), TokenType.octal);
               }
               else if ((m = source.scan(FLOAT)) != null)
               {
                  encoder.textToken(m.group(), TokenType.float_);
               }
               else if ((m = source.scan(INTEGER)) != null)
               {
                  encoder.textToken(m.group(), TokenType.integer);
               }
            }
            else if ((m = source.scan(START_STRING)) != null)
            {
               state = State.string;
               encoder.beginGroup(TokenType.string);
               string_delimiter = m.group();
               encoder.textToken(m.group(), TokenType.delimiter);
            }
            else if ((m = source.scan(ANNOTATION)) != null)
            {
               encoder.textToken(m.group(), TokenType.annotation);
            }
            else
            {
               encoder.textToken(source.next(), TokenType.error);
            }
            break;
         case string:
            if ((m = source.scan(STRING_CONTENT_PATTERN.get(string_delimiter))) != null)
            {
               encoder.textToken(m.group(), TokenType.content);
            }
            else if ((m = source.scan(END_STRING)) != null)
            {
               encoder.textToken(m.group(), TokenType.delimiter);
               encoder.endGroup(TokenType.string);
               state = State.initial;
               string_delimiter = null;
            }
            else if (state == State.string && (m = source.scan(STRING_CONTENT)) != null)
            {
               if ("'".equals(string_delimiter) && !("\\\\".equals(m.group()) || "\\'".equals(m.group())))
               {
                  encoder.textToken(m.group(), TokenType.content);
               }
               else
               {
                  encoder.textToken(m.group(), TokenType.char_);
               }
            }
            else if ((m = source.scan(STRING_CONTENT_2)) != null)
            {
               encoder.textToken(m.group(), TokenType.content);
            }
            else if ((m = source.scan(END_GROUP)) != null)
            {
               encoder.endGroup(TokenType.string);
               state = State.initial;
               if (!m.group().isEmpty())
               {
                  encoder.textToken(m.group(), TokenType.error);
               }
            }
            else
            {
               throw new RuntimeException("else case \" reached; " + source.peek(1) + " in " + getClass());
            }
            break;
         default:
            throw new RuntimeException("unknown state " + state);
         }
         if (m != null)
         {
            last_token_dot = (".".equals(m.group()));
         }
      }
      if (state == State.string)
      {
         encoder.endGroup(TokenType.string);
View Full Code Here

      }
      state.push(initialState);

      while (source.hasMore())
      {
         MatchResult m = null;

         if ((m = source.scan(SPACE)) != null)
         {
            encoder.textToken(m.group(), TokenType.space);
         }
         else if (media_blocks(source, encoder, value_expected, state))
         {

         }
         else if ((m = source.scan(COMMENT)) != null)
         {
            encoder.textToken(m.group(), TokenType.comment);
         }
         else if ((m = source.scan(BRACKET_OPEN)) != null)
         {
            value_expected = false;
            encoder.textToken(m.group(), TokenType.operator);
            state.push(State.block);
         }
         else if ((m = source.scan(BRACKET_CLOSE)) != null)
         {
            value_expected = false;
            encoder.textToken(m.group(), TokenType.operator);
            if (state.peek() == State.block || state.peek() == State.media)
            {
               state.pop();
            }
         }
         else if ((m = source.scan(STRING)) != null)
         {
            encoder.beginGroup(TokenType.string);
            encoder.textToken(m.group().substring(0, 1), TokenType.delimiter);
            if (m.group().length() > 2)
            {
               encoder.textToken(m.group().substring(1, m.group().length() - 1), TokenType.content);
            }
            if (m.group().length() >= 2)
            {
               encoder.textToken(m.group().substring(m.group().length() - 1), TokenType.delimiter);
            }
            encoder.endGroup(TokenType.string);
         }
         else if ((m = source.scan(FUNCTION)) != null)
         {
            encoder.beginGroup(TokenType.function);
            Matcher functionMatcher = FUNCTION_NAME.matcher(m.group());
            functionMatcher.lookingAt();
            String start = functionMatcher.group();
            encoder.textToken(start, TokenType.delimiter);
            if (PARENTHESES_END.matcher(m.group().substring(m.group().length() - 1)).matches())
            {
               if (m.group().length() > start.length() + 1)
               {
                  encoder.textToken(m.group().substring(start.length(), m.group().length() - 1), TokenType.content);
                  encoder.textToken(")", TokenType.delimiter);
               }
            }
            else if (m.group().length() > start.length())
            {
               encoder.textToken(m.group().substring(start.length(), m.group().length() - 1), TokenType.content);
            }
            encoder.endGroup(TokenType.function);
         }
         else if ((m = source.scan(FLOAT)) != null)
         {
            encoder.textToken(m.group(), TokenType.float_);
         }
         else if ((m = source.scan(HEX_COLOR)) != null)
         {
            encoder.textToken(m.group(), TokenType.color);
         }
         else if ((m = source.scan(IMPORTANT)) != null)
         {
            encoder.textToken(m.group(), TokenType.important);
         }
         else if ((m = source.scan(COLOR)) != null)
         {
            encoder.textToken(m.group(), TokenType.color);
         }
         else if ((m = source.scan(AT_KEYWORD)) != null)
         {
            encoder.textToken(m.group(), TokenType.directive);
         }
         else if ((m = source.scan(OPERATOR)) != null)
         {
            if (":".equals(m.group()))
            {
               value_expected = true;
            }
            else if (";".equals(m.group()))
            {
               value_expected = false;
            }
            encoder.textToken(m.group(), TokenType.operator);
         }
         else
         {
            encoder.textToken(source.next(), TokenType.error);
         }
View Full Code Here

      }
   }

   private boolean media_blocks(StringScanner source, Encoder encoder, boolean value_expected, Stack<State> state)
   {
      MatchResult m;
      switch (state.peek())
      {

      case initial:
      case media:
         if ((m = source.scan(TAG)) != null)
         {
            encoder.textToken(m.group(), TokenType.tag);
            return true;
         }
         else if ((m = source.scan(Class)) != null)
         {
            encoder.textToken(m.group(), TokenType.class_);
            return true;
         }
         else if ((m = source.scan(ID)) != null)
         {
            encoder.textToken(m.group(), TokenType.id);
            return true;
         }
         else if ((m = source.scan(PSEUDO_CLASS)) != null)
         {
            encoder.textToken(m.group(), TokenType.pseudo_class);
            return true;
         }
         else if ((m = source.scan(ATTRIBUTE_SELECTOR)) != null)
         {
            encoder.textToken(m.group().substring(0, 1), TokenType.operator);
            if (m.group().length() > 2)
            {
               encoder.textToken(m.group().substring(1, m.group().length() - 1), TokenType.attribute_name);
            }
            if (SQUARE_END.matcher(m.group().substring(m.group().length() - 1)).matches())
            {
               encoder.textToken(m.group().substring(m.group().length() - 1), TokenType.operator);
            }
            return true;
         }
         else if ((m = source.scan(MEDIA)) != null)
         {
            encoder.textToken(m.group(), TokenType.directive);
            state.push(State.media_before_name);
            return true;
         }
         break;

      case block:
         if ((m = source.scan(KEY_VALUE)) != null)
         {
            if (value_expected)
            {
               encoder.textToken(m.group(), TokenType.value);
            }
            else
            {
               encoder.textToken(m.group(), TokenType.key);
            }
            return true;
         }
         break;

      case media_before_name:
         if ((m = source.scan(IDENT)) != null)
         {
            encoder.textToken(m.group(), TokenType.type);
            state.pop();
            state.push(State.media_after_name);
            return true;
         }
         break;

      case media_after_name:
         if ((m = source.scan(BRACKET_OPEN)) != null)
         {
            encoder.textToken(m.group(), TokenType.operator);
            state.pop();
            state.push(State.media);
            return true;
         }
         break;
View Full Code Here

   }

   @Override
   public void scan(StringScanner source, Encoder encoder, Map<String, Object> options)
   {
      MatchResult m = source.scan(ALL);
      if (m != null)
      {
         encoder.textToken(m.group(), TokenType.plain);
      }
   }
View Full Code Here

      String in_tag = null;
      Pattern plain_string_content = null;

      while (source.hasMore())
      {
         MatchResult m = null;

         if (state != State.in_special_tag && (m = source.scan(SPACE)) != null)
         {
            encoder.textToken(m.group(), TokenType.space);
         }
         else
         {

            switch (state)
            {
            case initial:

               if ((m = source.scan(CDATA_START)) != null)
               {
                  encoder.textToken(m.group(), TokenType.inline_delimiter);
                  if ((m = source.scan(CDATA_END)) != null)
                  {
                     encoder.textToken(m.group().substring(0, m.group().length() - 3), TokenType.plain);
                     encoder.textToken("]]>", TokenType.inline_delimiter);
                  }
                  else if ((m = source.scan(CDATA_ERROR)) != null)
                  {
                     encoder.textToken(m.group(), TokenType.error);
                  }
               }
               else if ((m = source.scan(COMMENT)) != null)
               {
                  encoder.textToken(m.group(), TokenType.comment);
               }
               else if ((m = source.scan(DOCTYPE)) != null)
               {
                  encoder.textToken(m.group(), TokenType.doctype);
               }
               else if ((m = source.scan(PRE_PROCESSOR)) != null)
               {
                  encoder.textToken(m.group(), TokenType.preprocessor);
               }
               else if ((m = source.scan(COMMENT2)) != null)
               {
                  encoder.textToken(m.group(), TokenType.comment);
               }
               else if ((m = source.scan(TAG)) != null)
               {
                  in_tag = null;
                  encoder.textToken(m.group(), TokenType.tag);
               }
               else if ((m = source.scan(SPECIAL_TAG)) != null)
               {
                  encoder.textToken(m.group(), TokenType.tag);
                  in_tag = m.group(1);
                  if (m.group(2) != null)
                  {
                     if (in_tag != null)
                     {
                        state = State.in_special_tag;
                     }
                  }
                  else
                  {
                     state = State.attribute;
                  }
               }
               else if ((m = source.scan(PLAIN)) != null)
               {
                  encoder.textToken(m.group(), TokenType.plain);
               }
               else if ((m = source.scan(ENTITY)) != null)
               {
                  encoder.textToken(m.group(), TokenType.entity);
               }
               else if ((m = source.scan(ERROR)) != null)
               {
                  in_tag = null;
                  encoder.textToken(m.group(), TokenType.error);
               }
               else
               {
                  throw new RuntimeException("[BUG] else-case reached with state " + state + " in " + getClass());
               }

               break;
            case attribute:

               if ((m = source.scan(TAG_END)) != null)
               {
                  encoder.textToken(m.group(), TokenType.tag);
                  in_attribute = null;
                  if (in_tag != null)
                  {
                     state = State.in_special_tag;
                  }
                  else
                  {
                     state = State.initial;
                  }
               }
               else if ((m = source.scan(ATTR_NAME)) != null)
               {
                  in_attribute = IN_ATTRIBUTE.lookup(m.group());
                  encoder.textToken(m.group(), TokenType.attribute_name);
                  state = State.attribute_equal;
               }
               else
               {
                  in_tag = null;
                  encoder.textToken(source.next(), TokenType.error);
               }

               break;
            case attribute_equal:

               if ((m = source.scan(EQUAL)) != null)
               {
                  encoder.textToken(m.group(), TokenType.operator);
                  state = State.attribute_value;
               }
               else
               {
                  state = State.attribute;
                  break;
               }

            case attribute_value:
               if ((m = source.scan(ATTR_NAME)) != null)
               {
                  encoder.textToken(m.group(), TokenType.attribute_value);
                  state = State.attribute;
               }
               else if ((m = source.scan(QUOTE)) != null)
               {
                  if (EmbeddedType.script == in_attribute || EmbeddedType.style == in_attribute)
                  {
                     encoder.beginGroup(TokenType.string);
                     encoder.textToken(m.group(), TokenType.delimiter);
                     String groupStart = m.group();

                     if ((m = source.scan(JAVASCRIPT_INLINE)) != null)
                     {
                        encoder.textToken(m.group(), TokenType.comment);
                     }
                     String code = source.scanUntil(Pattern.compile("(?=" + groupStart + "|\\z)")).group();
                     if (EmbeddedType.script == in_attribute)
                     {
                        Syntax.Builder.create()
                                 .scannerType(JavaScriptScanner.TYPE.getName())
                                 .encoder(encoder)
                                 .execute(code);
                     }
                     else
                     {
                        Syntax.Builder.create()
                                 .scannerType(CSSScanner.TYPE.getName())
                                 .encoder(encoder)
                                 .scannerOptions(
                                          Options.create()
                                                   .add(CSSScanner.OPTION_START_STATE, CSSScanner.State.block))
                                 .execute(code);
                     }
                     m = source.scan(QUOTE);
                     if (m != null)
                     {
                        encoder.textToken(m.group(), TokenType.delimiter);
                     }
                     encoder.endGroup(TokenType.string);
                     state = State.attribute;
                     in_attribute = null;
                  }
                  else
                  {
                     encoder.beginGroup(TokenType.string);
                     state = State.attribute_value_string;
                     plain_string_content = PLAIN_STRING_CONTENT.get(m.group());
                     encoder.textToken(m.group(), TokenType.delimiter);
                  }
               }
               else if ((m = source.scan(TAG_END)) != null)
               {
                  encoder.textToken(m.group(), TokenType.tag);
                  state = State.initial;
               }
               else
               {
                  encoder.textToken(source.next(), TokenType.error);
               }
               break;
            case attribute_value_string:

               if ((m = source.scan(plain_string_content)) != null)
               {
                  encoder.textToken(m.group(), TokenType.content);
               }
               else if ((m = source.scan(QUOTE)) != null)
               {
                  encoder.textToken(m.group(), TokenType.delimiter);
                  encoder.endGroup(TokenType.string);
                  state = State.attribute;
               }
               else if ((m = source.scan(ENTITY)) != null)
               {
                  encoder.textToken(m.group(), TokenType.entity);
               }
               else if ((m = source.scan(AMP)) != null)
               {
                  encoder.textToken(m.group(), TokenType.content);
               }
               else if ((m = source.scan(END)) != null)
               {
                  encoder.endGroup(TokenType.string);
                  state = State.initial;
                  encoder.textToken(m.group(), TokenType.error);
               }
               break;
            case in_special_tag:

               if ("script".equalsIgnoreCase(in_tag) || "style".equalsIgnoreCase(in_tag))
               {
                  String code = null;
                  String closing = null;
                  if ((m = source.scan(SPECIAL_SPACE)) != null)
                  {
                     encoder.textToken(m.group(), TokenType.space);
                  }
                  if ((m = source.scan(SPECIAL_COMMENT)) != null)
                  {
                     code = m.group(2);
                     if (code == null)
                     {
                        code = m.group(4);
                     }
                     closing = m.group(3);
                     encoder.textToken(m.group(1), TokenType.comment);
                  }
                  else
                  {
                     code = source.scanUntil("(?=(?:\\n\\s*)?<\\/" + in_tag + ">)|\\z").group();
                     closing = null;
View Full Code Here

      contxt.state = State.initial;
      contxt.key_indent = null;

      while (source.hasMore())
      {
         MatchResult m = null;
         if(source.isBeginningOfLine())
         {
            contxt.key_indent = null;
         }

         if ((m = source.scan(SPACE)) != null)
         {
            encoder.textToken(m.group(), TokenType.space);
         }
         else if ((m = source.scan(SPACE_NEWLINE)) != null)
         {
            encoder.textToken(m.group(), TokenType.space);
            if (m.group().indexOf("\n") != -1)
            {
               contxt.state = State.initial;
            }
         }
         else if ((m = source.scan(COMMENT)) != null)
         {
            encoder.textToken(m.group(), TokenType.comment);
         }
         else if (source.isBeginningOfLine() && head_doctype(source, encoder))
         {
            continue;
         }
View Full Code Here

TOP

Related Classes of java.util.regex.MatchResult

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.