java.util.regex.Matcher#reset ( )源码实例Demo

下面列出了java.util.regex.Matcher#reset ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: ranger   文件: RegEx.java
protected void populateReplacementPatterns(String baseProperty, List<String> regexPatterns) throws Throwable{
	replacementPattern = new LinkedHashMap<String, String>();
	Pattern p = Pattern.compile("s/([^/]*)/([^/]*)/(g)?");
	for (String regexPattern : regexPatterns) {
		Matcher m = p.matcher(regexPattern);
		if (!m.matches()) {
			logger.warn("Invalid RegEx " + regexPattern + " and hence skipping this regex property");
		}
		m = m.reset();
		while (m.find()) {
			String matchPattern = m.group(1);
			String replacement = m.group(2);
			if (matchPattern != null && !matchPattern.isEmpty() && replacement != null) {
				replacementPattern.put(matchPattern, replacement);
				if (logger.isDebugEnabled()) {
					logger.debug(baseProperty + " match pattern = " + matchPattern + " and replacement string = " + replacement);
				}
			}
		}
	}
}
 
源代码2 项目: logsniffer   文件: DateFormatUtils.java
private void replace(final Pattern searchPattern, final String[]... alternatives) {
	final Matcher matcher = searchPattern.matcher(pattern.toString());
	if (matcher.matches()) {
		final StringBuilder rplStr = new StringBuilder("(");
		for (final String[] pool : alternatives) {
			for (final String s : pool) {
				if (rplStr.length() > 1) {
					rplStr.append("|");
				}
				rplStr.append(Pattern.quote(s));
			}
		}
		rplStr.append(")");
		int dif = 0;
		matcher.reset();
		while (matcher.find()) {
			dif += -(pattern.length() - pattern
					.replace(matcher.start() + dif, matcher.end() + dif, "@" + replacedParts.size() + "@")
					.length());
			replacedParts.add(rplStr.toString());
		}
	}
}
 
@Override
public String apply(String value) {
	if (value.isEmpty()) {
		return value;
	}
	Matcher matcher = CAMEL_CASE_PATTERN.matcher(value);
	if (!matcher.find()) {
		return value;
	}
	matcher = matcher.reset();
	StringBuffer result = new StringBuffer();
	while (matcher.find()) {
		matcher.appendReplacement(result, matcher.group(1) + '-'
				+ StringUtils.uncapitalize(matcher.group(2)));
	}
	matcher.appendTail(result);
	return result.toString();
}
 
private void parseAndAddBindingConfig(Item item, String bindingConfig) throws BindingConfigParseException {
    ProtocolBindingConfig newConfig = new ProtocolBindingConfig();
    Matcher matcher = BASE_CONFIG_PATTERN.matcher(bindingConfig);

    if (!matcher.matches()) {
        throw new BindingConfigParseException(
                "bindingConfig '" + bindingConfig + "' doesn't contain a valid binding configuration");
    }
    matcher.reset();

    while (matcher.find()) {
        String bindingConfigPart = matcher.group(1);
        if (StringUtils.isNotBlank(bindingConfigPart)) {
            parseBindingConfig(newConfig, item, bindingConfigPart);
            addBindingConfig(item, newConfig);
        }
    }
}
 
源代码5 项目: datacollector   文件: StringRedactor.java
/**
 * The actual work of redaction.
 * @param msg The string to redact
 * @return If any redaction was performed, the redacted string. Otherwise
 *         the original is returned.
 */
private String redact(String msg) {
  if (msg == null) {
    return null;
  }
  String original = msg;
  boolean matched = false;
  for (RedactionRule rule : rules) {
    if (rule.matchesTrigger(msg)) {
      Matcher m = rule.matcherTL.get();
      m.reset(msg);
      if (m.find()) {
        msg = m.replaceAll(rule.replace);
        matched = true;
      }
    }
  }
  return matched ? msg : original;
}
 
源代码6 项目: e4macs   文件: SexpHandler.java
/**
 * If a _ is not a word break character, see if the BreakIterator stopped on one
 * 
 * @param doc
 * @param pos
 * @return new offset if word moves past any _'s, else pos
 */
int checkUnder(IDocument doc, int pos) {
	int result = pos;
	try {
		if (!isUnder()) {
			char c = doc.getChar(pos);
			if (!isDot() || c != '.') {
				IRegion lineInfo = doc.getLineInformationOfOffset(pos);
				int p = pos;
				// if we're at or just moved over an _
				if (c == '_' || (--p >= lineInfo.getOffset() && doc.getChar(p) == '_')) {
					int end = (lineInfo.getOffset() + lineInfo.getLength()); 
					if (end > p) {
						Matcher matcher = getUnderMatcher();
						matcher.reset(doc.get(p, end - p));
						if (matcher.matches()) {
							result = p + matcher.end(1);
						}
					}
				}
			}
		}
	} catch (BadLocationException e) {
	}
	return result;
}
 
protected ExecBindingConfig parseInBindingConfig(Item item, String bindingConfig, ExecBindingConfig config)
        throws BindingConfigParseException {

    Matcher matcher = IN_BINDING_PATTERN.matcher(bindingConfig);

    if (!matcher.matches()) {
        throw new BindingConfigParseException(
                "bindingConfig '" + bindingConfig + "' doesn't represent a valid in-binding-configuration.");
    }
    matcher.reset();

    ExecBindingConfigElement configElement;

    while (matcher.find()) {
        configElement = new ExecBindingConfigElement();
        configElement.commandLine = matcher.group(1).replaceAll("\\\\\"", "");
        configElement.refreshInterval = Integer.valueOf(matcher.group(2)).intValue();
        configElement.transformation = matcher.group(3).replaceAll("\\\\\"", "\"");
        config.put(IN_BINDING_KEY, configElement);
    }

    return config;
}
 
源代码8 项目: spring-cloud-dataflow   文件: RelaxedNames.java
@Override
public String apply(String value) {
	if (value.isEmpty()) {
		return value;
	}
	Matcher matcher = CAMEL_CASE_PATTERN.matcher(value);
	if (!matcher.find()) {
		return value;
	}
	matcher = matcher.reset();
	StringBuffer result = new StringBuffer();
	while (matcher.find()) {
		matcher.appendReplacement(result, matcher.group(1) + '-'
				+ StringUtils.uncapitalize(matcher.group(2)));
	}
	matcher.appendTail(result);
	return result.toString();
}
 
源代码9 项目: cmake4eclipse   文件: Arglets.java
/**
 * @param cwd
 *          the current working directory of the compiler at its invocation
 * @see de.marw.cmake.cdt.lsp.IArglet#processArgument(IParseContext, IPath, String)
 */
protected final int processArgument(IParseContext parseContext, IPath cwd,
    String argsLine, NameOptionMatcher[] optionMatchers) {
  for (NameOptionMatcher oMatcher : optionMatchers) {
    final Matcher matcher = oMatcher.matcher;

    matcher.reset(argsLine);
    if (matcher.lookingAt()) {
      String name = matcher.group(oMatcher.nameGroup);
      IPath path = Path.fromOSString(name);
      if (!path.isAbsolute()) {
        // prepend CWD
        name = cwd.append(path).toOSString();
      }

      final ICLanguageSettingEntry entry = CDataUtil.createCMacroFileEntry(name,
          ICSettingEntry.READONLY);
      parseContext.addSettingEntry(entry);
      final int end = matcher.end();
      return end;
    }
  }
  return 0;// no input consumed
}
 
源代码10 项目: Varis-Android   文件: LogsParser.java
/**
 * Turns a single TextLeaf with any number of travis_fold:... or travis_time:... commands into
 * multiple LogEntryComponents ensuring that each command has its own TravisCommandLeaf.
 */
private List<LogEntryComponent> splitAtTravisCommands(TextLeaf textLeaf) {
    List<LogEntryComponent> result = new ArrayList<>();
    Matcher matcher = TRAVIS_COMMAND.matcher(textLeaf.getText());
    while (matcher.find()) {
        // Create a new node for the part before the travis command (if non-empty)
        if (matcher.start() > 0) {
            TextLeaf splitFront = new TextLeaf(textLeaf.getOptions());
            splitFront.setText(textLeaf.getText().substring(0, matcher.start()));
            result.add(splitFront);
        }

        // Create a node for the command
        result.add(new TravisCommandLeaf(matcher.group(1), matcher.group(2), matcher.group(3)));

        // Set text to what remains after the command
        textLeaf.setText(textLeaf.getText().substring(matcher.end()));
        matcher.reset(textLeaf.getText());
    }
    result.add(textLeaf);
    return result;
}
 
源代码11 项目: bistoury   文件: HeapHistoBeanHandle.java
private HistogramBean parseHistogramBean(Matcher matcher, String line) {
    matcher.reset(line);
    if (matcher.matches()) {
        return new HistogramBean(matcher.group(COUNT_INDEX), matcher.group(BYTES_INDEX), matcher.group(CLASSNAME_INDEX));
    }
    return null;
}
 
源代码12 项目: TLint   文件: HtmlUtil.java
public static String transImgToLocal(String content) {
    Pattern pattern = Pattern.compile("<img(.+?)data_url=\"(.+?)\"(.+?)src=\"(.+?)\"(.+?)>");
    Matcher localMatcher = pattern.matcher(content);
    while (localMatcher.find()) {
        String imageUrl = localMatcher.group(4);
        String localUrl = transToLocal(imageUrl);
        String localPath = "file://" + ConfigUtil.getCachePath() + File.separator + localUrl;
        if (FileUtil.exist(localPath)) {
            content = content.replace(imageUrl, localUrl);
        }
    }
    localMatcher.reset();
    return content;
}
 
源代码13 项目: scriptella-etl   文件: TextQueryExecutor.java
/**
 * Executes a query and iterates the resultset using the callback.
 *
 * @param qc      callback to notify on each row.
 * @param counter statements counter.
 */
public void execute(Reader reader, final QueryCallback qc, AbstractConnection.StatementCounter counter) {
    int qCount = query.length;
    Matcher[] matchers = new Matcher[qCount];

    LineIterator it = new LineIterator(reader, ps, textParams.isTrimLines());
    //Skip a specified number of lines
    for (int i = textParams.getSkipLines(); i > 0  && it.hasNext(); i--) {
        it.next();
    }
    while (it.hasNext()) {
        String line = it.next();
        for (int i = 0; i < qCount; i++) {
            Matcher m = matchers[i];
            if (m == null) { //First time initialization
                m = query[i].matcher(line);
                matchers[i] = m;
            } else { //Reuse matcher for better performance
                m.reset(line);
            }
            if (m.find()) {
                if (LOG.isLoggable(Level.FINE)) {
                    LOG.info("Pattern matched: " + m);
                }
                result = m;
                qc.processRow(this);
            }
        }
    }
    counter.statements += qCount;
}
 
源代码14 项目: dremio-oss   文件: ExtractPattern.java
public static Match extract(Matcher matcher, String matchee, IndexType type, int index) {
  matcher.reset(matchee);
  switch (type) {
    case INDEX:
    case INDEX_BACKWARDS:
      List<Match> matches = new ArrayList<Match>();
      while (matcher.find()) {
        matches.add(PatternMatchUtils.match(matcher));
      }
      int length = matches.size();
      int i = (type == INDEX_BACKWARDS) ? length - 1 - index : index;
      if (i < matches.size() && i >= 0) {
        return matches.get(i);
      }
      break;
    case CAPTURE_GROUP:
      if (matcher.matches()) {
        if (index >= 0 && index < matcher.groupCount()) {
          return PatternMatchUtils.groupMatch(matcher, index);
        }
      }
      break;
    default:
      throw new UnsupportedOperationException(type.name());
  }
  return null;
}
 
源代码15 项目: YetAnotherPixelDungeon   文件: Window.java
public Highlighter( String text ) {
	
	String stripped = STRIPPER.matcher( text ).replaceAll( "" );
	mask = new boolean[stripped.length()];
	
	Matcher m = HIGHLIGHTER.matcher( stripped );
	
	int pos = 0;
	int lastMatch = 0;
	
	while (m.find()) {
		pos += (m.start() - lastMatch);
		int groupLen = m.group( 1 ).length();
		for (int i=pos; i < pos + groupLen; i++) {
			mask[i] = true;
		}
		pos += groupLen;
		lastMatch = m.end();
	}
	
	m.reset( text );
	StringBuffer sb = new StringBuffer();
	while (m.find()) {
		m.appendReplacement( sb, m.group( 1 ) );
	}
	m.appendTail( sb );
	
	this.text = sb.toString();
}
 
源代码16 项目: j2objc   文件: SpoofCheckerTest.java
@Test
public void testConfData() {
    if (TestUtil.getJavaVendor() == JavaVendor.IBM && TestUtil.getJavaVersion() == 5) {
        // Note: IBM Java 5 has a bug reading a large UTF-8 text contents
        logln("Skip this test case because of the IBM Java 5 bug");
        return;
    }
    try {
        // Read in the confusables.txt file. (Distributed by Unicode.org)
        String fileName = "unicode/confusables.txt";
        BufferedReader confusablesRdr = TestUtil.getDataReader(fileName, "UTF-8");

        // Create a default spoof checker to use in this test.
        SpoofChecker sc = new SpoofChecker.Builder().build();

        // Parse lines from the confusables.txt file. Example Line:
        // FF44 ; 0064 ; SL # ( d -> d ) FULLWIDTH ....
        // Lines have three fields. The hex fields can contain more than one character,
        // and each character may be more than 4 digits (for supplemntals)
        // This regular expression matches lines and splits the fields into capture groups.
        // Capture group 1: map from chars
        // 2: map to chars
        // 3: table type, SL, ML, SA or MA (deprecated)
        // 4: Comment Lines Only
        // 5: Error Lines Only
        Matcher parseLine = Pattern.compile(
                "\\ufeff?" + "(?:([0-9A-F\\s]+);([0-9A-F\\s]+);\\s*(SL|ML|SA|MA)\\s*(?:#.*?)?$)"
                        + "|\\ufeff?(\\s*(?:#.*)?)"). // Comment line
                        matcher("");
        Normalizer2 normalizer = Normalizer2.getNFDInstance();
        int lineNum = 0;
        String inputLine;
        while ((inputLine = confusablesRdr.readLine()) != null) {
            lineNum++;
            parseLine.reset(inputLine);
            if (!parseLine.matches()) {
                errln("Syntax error in confusable data file at line " + lineNum);
                errln(inputLine);
                break;
            }
            if (parseLine.group(4) != null) {
                continue; // comment line
            }
            String from = parseHex(parseLine.group(1));

            if (!normalizer.isNormalized(from)) {
                // The source character was not NFD.
                // Skip this case; the first step in obtaining a skeleton is to NFD the input,
                // so the mapping in this line of confusables.txt will never be applied.
                continue;
            }

            String rawExpected = parseHex(parseLine.group(2));
            String expected = normalizer.normalize(rawExpected);

            String actual;
            actual = sc.getSkeleton(from);

            if (!actual.equals(expected)) {
                errln("confusables.txt: " + lineNum + ": " + parseLine.group(0));
                errln("Actual: " + escapeString(actual));
            }
        }
        confusablesRdr.close();
    } catch (IOException e) {
        errln(e.toString());
    }
}
 
源代码17 项目: opentasks   文件: DescriptionFieldAdapter.java
private static List<DescriptionItem> parseDescription(String description)
{
    List<DescriptionItem> result = new ArrayList<DescriptionItem>(16);
    if (TextUtils.isEmpty(description))
    {
        return result;
    }
    Matcher matcher = CHECKMARK_PATTERN.matcher("");
    StringBuilder currentParagraph = new StringBuilder();
    boolean currentHasCheckedMark = false;
    boolean currentIsChecked = false;
    for (String line : description.split("\n"))
    {
        matcher.reset(line);

        if (matcher.lookingAt())
        {
            // start a new paragraph, if we already had one
            if (currentParagraph.length() > 0)
            {
                result.add(new DescriptionItem(currentHasCheckedMark, currentIsChecked,
                        currentHasCheckedMark ? currentParagraph.toString().trim() : currentParagraph.toString()));
            }
            currentHasCheckedMark = true;
            currentIsChecked = "x".equals(matcher.group(2).toLowerCase());
            currentParagraph.setLength(0);
            currentParagraph.append(matcher.group(3));
        }
        else
        {
            if (currentHasCheckedMark)
            {
                // start a new paragraph, if the last one had a tick mark
                if (currentParagraph.length() > 0)
                {
                    // close last paragraph
                    result.add(new DescriptionItem(currentHasCheckedMark, currentIsChecked, currentParagraph.toString().trim()));
                }
                currentHasCheckedMark = false;
                currentParagraph.setLength(0);
            }
            if (currentParagraph.length() > 0)
            {
                currentParagraph.append("\n");
            }
            currentParagraph.append(line);
        }
    }

    // close paragraph
    if (currentHasCheckedMark || currentParagraph.length() > 0)
    {
        result.add(new DescriptionItem(currentHasCheckedMark, currentIsChecked,
                currentHasCheckedMark ? currentParagraph.toString().trim() : currentParagraph.toString()));
    }
    return result;
}
 
/**
 * {@inheritDoc}
 */
@Override
public void processBindingConfiguration(String context, Item item, String bindingConfig)
        throws BindingConfigParseException {

    super.processBindingConfiguration(context, item, bindingConfig);

    ExecBindingConfig config = new ExecBindingConfig();
    config.acceptedDataTypes = new ArrayList<Class<? extends State>>(item.getAcceptedDataTypes());

    Matcher matcher = BASE_CONFIG_PATTERN.matcher(bindingConfig);

    if (!matcher.matches()) {

        if (bindingConfig.startsWith("<") || bindingConfig.startsWith(">")) {
            throw new BindingConfigParseException("Exec binding legacy format cannot start with '<' or '>' ");
        }

        // backward compatibility for old format
        parseLegacyOutBindingConfig(item, bindingConfig, config);

    } else {

        matcher.reset();

        while (matcher.find()) {
            String direction = matcher.group(1);
            String bindingConfigPart = matcher.group(2);

            if (direction.equals("<")) {
                config = parseInBindingConfig(item, bindingConfigPart, config);
            } else if (direction.equals(">")) {
                config = parseOutBindingConfig(item, bindingConfigPart, config);
            } else {
                throw new BindingConfigParseException(
                        "Unknown command given! Configuration must start with '<' or '>' ");
            }
        }
    }

    addBindingConfig(item, config);

}
 
源代码19 项目: CodeChickenLib   文件: CCModel.java
public static void assertMatch(Matcher m, String s)
{
    m.reset(s);
    illegalAssert(m.matches(), "Malformed line: "+s);
}
 
/**
 * Parses an http-out configuration by using the regular expression
 * <code>(.*?):([A-Z]*):(.*)</code>. Where the groups should contain the
 * following content:
 * <ul>
 * <li>1 - command</li>
 * <li>2 - http method</li>
 * <li>3 - url</li>
 * <li>4 - post body</li>
 * </ul>
 *
 * @param item
 * @param bindingConfig the config string to parse
 * @param config
 * @return the filled {@link HttpBindingConfig}
 *
 * @throws BindingConfigParseException if the regular expression doesn't match
 *             the given <code>bindingConfig</code>
 */
protected HttpBindingConfig parseOutBindingConfig(Item item, String bindingConfig, HttpBindingConfig config)
        throws BindingConfigParseException {
    logger.debug("parsing this as an http out binding: {}", bindingConfig);
    Matcher matcher = OUT_BINDING_PATTERN.matcher(bindingConfig);

    if (!matcher.matches()) {
        throw new BindingConfigParseException("bindingConfig '" + bindingConfig
                + "' doesn't contain a valid out-binding-configuration. A valid configuration is matched by the RegExp '"
                + OUT_BINDING_PATTERN + "'");
    }
    matcher.reset();

    HttpBindingConfigElement configElement;

    while (matcher.find()) {
        configElement = new HttpBindingConfigElement();

        Command command = createCommandFromString(item, matcher.group(1));
        configElement.httpMethod = matcher.group(2);
        String lastPart = matcher.group(3).replaceAll("\\\\\"", "");
        logger.debug("URL portion of binding config to be processed: {}", lastPart);

        Matcher urlMatcher = URL_PARSING_PATTERN.matcher(lastPart);
        urlMatcher.find();
        if (logger.isDebugEnabled()) {
            for (int i = 0; i <= urlMatcher.groupCount(); i++) {
                logger.debug("Group {}: {}", i, urlMatcher.group(i));
            }
        }

        if (urlMatcher.group(1).endsWith("}")) {
            String g1 = urlMatcher.group(1);
            int beginIdx = g1.indexOf("{");
            int endIdx = g1.indexOf("}");
            configElement.url = g1.substring(0, beginIdx);
            configElement.headers = parseHttpHeaders(g1.substring(beginIdx + 1, endIdx));
        } else {
            configElement.url = urlMatcher.group(1);
        }

        if (configElement.httpMethod.equals("POST") && urlMatcher.group(11) != null) {
            configElement.body = urlMatcher.group(11).substring(1);
            setBodyTransform(configElement, command);
        }

        config.put(command, configElement);
    }

    return config;
}