Java 类java.util.regex.MatchResult 实例源码
项目:jdk8u-jdk
文件:TzdbZoneRulesCompiler.java
private int parseYear(Scanner s, int defaultYear) {
if (s.hasNext(YEAR)) {
s.next(YEAR);
MatchResult mr = s.match();
if (mr.group(1) != null) {
return 1900; // systemv has min
} else if (mr.group(2) != null) {
return YEAR_MAX_VALUE;
} else if (mr.group(3) != null) {
return defaultYear;
}
return Integer.parseInt(mr.group(4));
/*
if (mr.group("min") != null) {
//return YEAR_MIN_VALUE;
return 1900; // systemv has min
} else if (mr.group("max") != null) {
return YEAR_MAX_VALUE;
} else if (mr.group("only") != null) {
return defaultYear;
}
return Integer.parseInt(mr.group("year"));
*/
}
throw new IllegalArgumentException("Unknown year: " + s.next());
}
项目:openjdk-jdk10
文件:DefaultFormat.java
protected ThreadStack parseThreadInfo(String threadInfo) {
Scanner s = new Scanner(threadInfo);
ThreadStack result = new ThreadStack();
// parsing thread info
s.findInLine(threadInfoPattern());
MatchResult res = s.match();
result.setThreadName(res.group(1));
result.setType(res.group(3));
result.setPriority(res.group(4));
result.setTid(res.group(7));
result.setNid(res.group(8));
result.setStatus(res.group(9));
s.close();
return result;
}
项目:openjdk-jdk10
文件:DefaultFormat.java
protected MethodInfo parseMethodInfo(String line) {
MethodInfo result = new MethodInfo();
Scanner s = new Scanner(line);
s.findInLine(methodInfoPattern());
MatchResult rexp = s.match();
if (rexp.group(4) != null && rexp.group(4).length() > 0) {
// line " at tmtools.jstack.share.utils.Utils.sleep(Utils.java:29)"
result.setName(rexp.group(1));
result.setCompilationUnit(rexp.group(2));
result.setLine(rexp.group(4));
} else {
// line " at java.lang.Thread.sleep(Native Method)"
result.setName(rexp.group(1));
}
s.close();
return result;
}
项目:openddr-java
文件:WinCEMozillaSubBuilder.java
private void setWinCeVersion(OperatingSystem model) {
//TODO: to be refined
String osV = model.getVersion();
if (osV == null) {
return;
} else if (!model.getMajorRevision().equals("1")) {
return;
}
if (osV.matches(".*(\\d+).(\\d+).(\\d+).(\\d+).*")) {
Scanner s = new Scanner(osV);
s.findInLine(".*(\\d+).(\\d+).(\\d+).(\\d+).*");
MatchResult result = s.match();
if (result.group(1).equals("4")) {
model.setMajorRevision("5");
} else if (result.group(1).equals("6")) {
model.setMajorRevision("6");
if (result.group(3).equals("7")) {
model.setMinorRevision("1");
}
}
}
}
项目:Wurst-MC-1.12
文件:JGoogleAnalyticsTracker.java
/**
* Define the proxy to use for all GA tracking requests.
* <p>
* Call this static method early (before creating any tracking requests).
*
* @param proxyAddr
* "addr:port" of the proxy to use; may also be given as URL
* ("http://addr:port/").
*/
public static void setProxy(String proxyAddr)
{
if(proxyAddr != null)
{
Scanner s = new Scanner(proxyAddr);
// Split into "proxyAddr:proxyPort".
proxyAddr = null;
int proxyPort = 8080;
try
{
s.findInLine("(http://|)([^:/]+)(:|)([0-9]*)(/|)");
MatchResult m = s.match();
if(m.groupCount() >= 2)
proxyAddr = m.group(2);
if(m.groupCount() >= 4 && !(m.group(4).length() == 0))
proxyPort = Integer.parseInt(m.group(4));
}finally
{
s.close();
}
if(proxyAddr != null)
{
SocketAddress sa = new InetSocketAddress(proxyAddr, proxyPort);
setProxy(new Proxy(Type.HTTP, sa));
}
}
}
项目:springreplugin
文件:DownloadFileInfo.java
/**
* 根据文件名得到插件名
*
* @param fullname
* @param type
* @return
*/
public static final String parseName(String fullname, int type) {
Matcher m = null;
if (type == INCREMENT_PLUGIN) {
m = INCREMENT_REGEX.matcher(fullname);
} else if (type == SINGLE_PLUGIN) {
m = INCREMENT_SINGLE_REGEX.matcher(fullname);
} else if (type == MULTI_PLUGIN) {
m = MULTI_REGEX.matcher(fullname);
} else {
m = NORMAL_REGEX.matcher(fullname);
}
if (m == null || !m.matches()) {
return null;
}
MatchResult r = m.toMatchResult();
if (r == null || r.groupCount() != 1) {
return null;
}
return r.group(1);
}
项目:openjdk-jdk10
文件:DefaultFormat.java
private MonitorInfo parseMonitorInfo(String line, String pattern) {
Scanner s = new Scanner(line);
s.findInLine(pattern);
MonitorInfo mi = new MonitorInfo();
MatchResult res = s.match();
mi.setType(res.group(1));
mi.setMonitorAddress(res.group(2));
if (res.groupCount() > 2) {
mi.setMonitorClass(res.group(3));
}
return mi;
}
项目:openjdk-jdk10
文件:DefaultFormat.java
protected LockInfo parseLockInfo(String line) {
LockInfo res = new LockInfo();
Scanner s = new Scanner(line);
s.findInLine(ownableSynchronizersPattern());
MatchResult matchRes = s.match();
String lock = matchRes.group(1).equals("None") ? matchRes.group(1) : matchRes.group(2);
res.setLock(lock);
return res;
}
项目:openjdk-jdk10
文件:ScannerStreamTest.java
public void findAllFileTest() {
// derive expected result by using conventional loop
Pattern pat = Pattern.compile("[A-Z]{7,}");
List<String> expected = new ArrayList<>();
try (Scanner sc = makeFileScanner(inputFile)) {
String match;
while ((match = sc.findWithinHorizon(pat, 0)) != null) {
expected.add(match);
}
}
Supplier<Stream<String>> ss =
() -> makeFileScanner(inputFile).findAll(pat).map(MatchResult::group);
withData(TestData.Factory.ofSupplier("findAllFileTest", ss))
.stream(LambdaTestHelpers.identity())
.expectedResult(expected)
.exercise();
}
项目:openjdk-jdk10
文件:ScannerStreamTest.java
@Test(dataProvider = "FindAllZero")
public void findAllZeroTest(String input, String patternString) {
Pattern pattern = Pattern.compile(patternString);
// generate expected result using Matcher.find()
Matcher m = pattern.matcher(input);
List<String> expected = new ArrayList<>();
while (m.find()) {
expected.add(m.group());
}
Supplier<Stream<String>> ss = () -> new Scanner(input).findAll(pattern)
.limit(100)
.map(MatchResult::group);
withData(TestData.Factory.ofSupplier("findAllZeroTest", ss))
.stream(LambdaTestHelpers.identity())
.expectedResult(expected)
.exercise();
}
项目:goobi-viewer-indexer
文件:MetadataHelper.java
public static void main(String[] args) {
String string = "Vol. 15 xxx";
Pattern p = Pattern.compile(".*(\\d+).*");
Matcher m = p.matcher(string);
if (m.find()) {
MatchResult mr = m.toMatchResult();
String value = mr.group(1);
System.out.println("found: " + value);
}
p = Pattern.compile("\\d+");
m = p.matcher(string);
while (m.find()) {
try {
String sub = string.substring(m.start(), m.end());
System.out.println("found 2: " + sub);
} catch (NumberFormatException e) {
logger.error(e.getMessage());
}
}
}
项目:skript-mirror
文件:ExprParseRegex.java
@Override
protected String[] get(Event e) {
List<MatchResult> regexes = ((CustomSyntaxEvent) e).getParseResult().regexes;
if (index < regexes.size()) {
MatchResult match = regexes.get(index);
int groupCount = match.groupCount();
String[] groups = new String[groupCount];
for (int i = 1; i <= groupCount; i++) {
groups[i - 1] = match.group(i);
}
return groups;
}
return new String[0];
}
项目:temporize
文件:TokenCreator.java
public static TokenCreator getCreator() {
return new TokenCreator() {
@Override
public Pattern getPattern() {
return EXP;
}
@Override
public Token create(MatchResult matchResult, String source, int line) {
return new Token.Variable(matchResult.group(),
matchResult.group(1), "|def" + matchResult.group(2),
source, line, matchResult.start());
}
};
}
项目:CostFed
文件:QueryManager.java
/**
* Find all prefixes declared in the query
* @param queryString
* @return
*/
protected static Set<String> findQueryPrefixes(String queryString) {
Set<String> res = new HashSet<String>();
Scanner sc = new Scanner(queryString);
while (true) {
while (sc.findInLine(prefixPattern)!=null) {
MatchResult m = sc.match();
res.add(m.group(1));
}
if (!sc.hasNextLine())
break;
sc.nextLine();
}
sc.close();
return res;
}
项目:openjdk9
文件:DefaultFormat.java
protected ThreadStack parseThreadInfo(String threadInfo) {
Scanner s = new Scanner(threadInfo);
ThreadStack result = new ThreadStack();
// parsing thread info
s.findInLine(threadInfoPattern());
MatchResult res = s.match();
result.setThreadName(res.group(1));
result.setType(res.group(3));
result.setPriority(res.group(4));
result.setTid(res.group(7));
result.setNid(res.group(8));
result.setStatus(res.group(9));
s.close();
return result;
}
项目:openjdk9
文件:DefaultFormat.java
protected MethodInfo parseMethodInfo(String line) {
MethodInfo result = new MethodInfo();
Scanner s = new Scanner(line);
s.findInLine(methodInfoPattern());
MatchResult rexp = s.match();
if (rexp.group(4) != null && rexp.group(4).length() > 0) {
// line " at tmtools.jstack.share.utils.Utils.sleep(Utils.java:29)"
result.setName(rexp.group(1));
result.setCompilationUnit(rexp.group(2));
result.setLine(rexp.group(4));
} else {
// line " at java.lang.Thread.sleep(Native Method)"
result.setName(rexp.group(1));
}
s.close();
return result;
}
项目:openjdk9
文件:ScannerStreamTest.java
public void findAllTest() {
// derive expected result by using conventional loop
Pattern pat = Pattern.compile("[A-Z]{7,}");
List<String> expected = new ArrayList<>();
try (Scanner sc = makeFileScanner(inputFile)) {
String match;
while ((match = sc.findWithinHorizon(pat, 0)) != null) {
expected.add(match);
}
}
Supplier<Stream<String>> ss =
() -> makeFileScanner(inputFile).findAll(pat).map(MatchResult::group);
withData(TestData.Factory.ofSupplier("findAllTest", ss))
.stream(LambdaTestHelpers.identity())
.expectedResult(expected)
.exercise();
}
项目:RedisConnector
文件:StringUtils.java
public static String substituteTemplate(final IContext context, String template,
final IMendixObject substitute, final boolean HTMLEncode, final String datetimeformat) {
return regexReplaceAll(template, "\\{(@)?([\\w./]+)\\}", new Function<MatchResult, String>() {
@Override
public String apply(MatchResult match)
{
String value;
String path = match.group(2);
if (match.group(1) != null)
value = String.valueOf(Core.getConfiguration().getConstantValue(path));
else {
try
{
value = ORM.getValueOfPath(context, substitute, path, datetimeformat);
}
catch (Exception e)
{
throw new RuntimeException(e);
}
}
return HTMLEncode ? HTMLEncode(value) : value;
}
});
}
项目:RedisConnector
文件:StringUtils.java
public static String regexReplaceAll(String source, String regexString, Function<MatchResult, String> replaceFunction) {
if (source == null || source.trim().isEmpty()) // avoid NPE's, save CPU
return "";
StringBuffer resultString = new StringBuffer();
Pattern regex = Pattern.compile(regexString);
Matcher regexMatcher = regex.matcher(source);
while (regexMatcher.find()) {
MatchResult match = regexMatcher.toMatchResult();
String value = replaceFunction.apply(match);
regexMatcher.appendReplacement(resultString, Matcher.quoteReplacement(value));
}
regexMatcher.appendTail(resultString);
return resultString.toString();
}
项目:ipst
文件:CommentScanner.java
int skipQuoted(String line, Matcher quote, MatchResult q) {
// First is a quote, skip until next (not escaped) quote is seen
int p = q.end();
int p1 = quoteRestart(q);
MatchResult q1 = find(quote, p1);
if (q1 == null) {
// No more quotes in the line, we are inside a string not closed in this line
eventHandler.onQuoted(line.substring(p), true, false);
isInsideString = true;
p = line.length();
} else {
// Emit this string and advance
eventHandler.onQuoted(line.substring(p, quoteStart(q1)), true, true);
p = q1.end();
}
return p;
}
项目:ipst
文件:CommentScanner.java
int skipBlockComment(String line, Matcher blockCommentEnd, MatchResult bcs) {
// We go through a block comment start and look for a block comment end
int p = bcs.end();
MatchResult bce = find(blockCommentEnd, p);
if (bce == null) {
// No block comment end found in this line, start a multi-line comment
eventHandler.onBlockComment(line.substring(p), true, false);
isInsideBlockComment = true;
p = line.length();
} else {
// Emit this block comment and advance
eventHandler.onBlockComment(line.substring(p, bce.start()), true, true);
p = bce.end();
}
return p;
}
项目:PackageTemplates
文件:RegexpHelperDialog.java
private void doMatch() {
String pattern = tfPattern.getText();
String text = tfText.getText();
int matchCount = RegexHelper.matchCount(text, pattern);
// Too much Matches
if (matchCount > 1) {
jlResult.setText(Localizer.get("error.MoreThenOneMatch"));
jlResult.setIcon(AllIcons.RunConfigurations.TestFailed);
return;
}
// No Matches
if (matchCount <= 0) {
jlResult.setText(Localizer.get("error.NoMatches"));
jlResult.setIcon(AllIcons.RunConfigurations.TestFailed);
return;
}
MatchResult matchResult = RegexHelper.match(text, pattern);
jlResult.setText(String.format(Localizer.get("regexp.MatchSuccess"), matchResult.group()));
jlResult.setIcon(AllIcons.RunConfigurations.TestPassed);
}
项目:OBEP
文件:PatternCollector.java
private TimePeriodExpression toTimeExpr() {
Matcher matcher = p.matcher(within);
if (matcher.find()) {
MatchResult res = matcher.toMatchResult();
if ("ms".equals(res.group(2))) {
return Expressions.timePeriod(null, null, null, null, Integer.parseInt(res.group(1)));
} else if ("s".equals(res.group(2))) {
return Expressions.timePeriod(null, null, null, Integer.parseInt(res.group(1)), null);
} else if ("m".equals(res.group(2))) {
return Expressions.timePeriod(null, null, Integer.parseInt(res.group(1)), null, null);
} else if ("h".equals(res.group(2))) {
return Expressions.timePeriod(null, Integer.parseInt(res.group(1)), null, null, null);
} else if ("d".equals(res.group(2))) {
return Expressions.timePeriod(Integer.parseInt(res.group(1)), null, null, null, null);
}
}
return null;
}
项目:graylog-plugin-pipeline-processor
文件:RegexMatch.java
public RegexMatchResult(boolean matches, MatchResult matchResult, List<String> groupNames) {
this.matches = matches;
ImmutableMap.Builder<String, String> builder = ImmutableMap.<String, String>builder();
if (matches) {
// arggggh! not 0 based.
final int groupCount = matchResult.groupCount();
for (int i = 1; i <= groupCount; i++) {
final String groupValue = matchResult.group(i);
if (groupValue == null) {
// You cannot add null values to an ImmutableMap but optional matcher groups may be null.
continue;
}
// try to get a group name, if that fails use a 0-based index as the name
final String groupName = Iterables.get(groupNames, i - 1, null);
builder.put(groupName != null ? groupName : String.valueOf(i - 1), groupValue);
}
}
groups = builder.build();
}
项目:java-restify
文件:EndpointPathParameterResolver.java
private String path(Object[] args) {
StringBuffer builder = new StringBuffer();
Matcher matcher = DynamicParameterMatcher.matches(path);
while (matcher.find()) {
MatchResult match = matcher.toMatchResult();
String name = match.group(1);
parameters.find(name)
.filter(p -> p.path())
.ifPresent(p -> matcher.appendReplacement(builder,
Optional.ofNullable(args[p.position()]).map(a -> p.resolve(a))
.orElseThrow(() -> new IllegalArgumentException("Your path argument [" + name + "] cannot be null."))));
}
matcher.appendTail(builder);
return builder.toString();
}
项目:newsleak-frontend
文件:HeidelTimeOpenNLP.java
/**
* Check whether the part of speech constraint defined in a rule is satisfied.
* @param s
* @param posConstraint
* @param m
* @param jcas
* @return
*/
public boolean checkPosConstraint(Sentence s, String posConstraint, MatchResult m, JCas jcas) {
Pattern paConstraint = Pattern.compile("group\\(([0-9]+)\\):(.*?):");
for (MatchResult mr : Toolbox.findMatches(paConstraint,posConstraint)) {
int groupNumber = Integer.parseInt(mr.group(1));
int tokenBegin = s.getBegin() + m.start(groupNumber);
int tokenEnd = s.getBegin() + m.end(groupNumber);
String pos = mr.group(2);
String pos_as_is = getPosFromMatchResult(tokenBegin, tokenEnd ,s, jcas);
if (pos_as_is.matches(pos)) {
Logger.printDetail("POS CONSTRAINT IS VALID: pos should be "+pos+" and is "+pos_as_is);
} else {
return false;
}
}
return true;
}
项目:jdk8u_jdk
文件:TzdbZoneRulesCompiler.java
private int parseYear(Scanner s, int defaultYear) {
if (s.hasNext(YEAR)) {
s.next(YEAR);
MatchResult mr = s.match();
if (mr.group(1) != null) {
return 1900; // systemv has min
} else if (mr.group(2) != null) {
return YEAR_MAX_VALUE;
} else if (mr.group(3) != null) {
return defaultYear;
}
return Integer.parseInt(mr.group(4));
/*
if (mr.group("min") != null) {
//return YEAR_MIN_VALUE;
return 1900; // systemv has min
} else if (mr.group("max") != null) {
return YEAR_MAX_VALUE;
} else if (mr.group("only") != null) {
return defaultYear;
}
return Integer.parseInt(mr.group("year"));
*/
}
throw new IllegalArgumentException("Unknown year: " + s.next());
}
项目:lookaside_java-1.8.0-openjdk
文件:TzdbZoneRulesCompiler.java
private int parseYear(Scanner s, int defaultYear) {
if (s.hasNext(YEAR)) {
s.next(YEAR);
MatchResult mr = s.match();
if (mr.group(1) != null) {
return 1900; // systemv has min
} else if (mr.group(2) != null) {
return YEAR_MAX_VALUE;
} else if (mr.group(3) != null) {
return defaultYear;
}
return Integer.parseInt(mr.group(4));
/*
if (mr.group("min") != null) {
//return YEAR_MIN_VALUE;
return 1900; // systemv has min
} else if (mr.group("max") != null) {
return YEAR_MAX_VALUE;
} else if (mr.group("only") != null) {
return defaultYear;
}
return Integer.parseInt(mr.group("year"));
*/
}
throw new IllegalArgumentException("Unknown year: " + s.next());
}
项目:EDDI
文件:CallbackMatcher.java
public String replaceMatches(CharSequence charSequence, Callback callback) throws CallbackMatcherException {
StringBuilder result = new StringBuilder(charSequence);
final Matcher matcher = this.pattern.matcher(charSequence);
int offset = 0;
while (matcher.find()) {
final MatchResult matchResult = matcher.toMatchResult();
final String replacement = callback.foundMatch(matchResult);
if (replacement == null) {
continue;
}
int matchStart = offset + matchResult.start();
int matchEnd = offset + matchResult.end();
result.replace(matchStart, matchEnd, replacement);
int matchLength = matchResult.end() - matchResult.start();
int lengthChange = replacement.length() - matchLength;
offset += lengthChange;
}
return result.toString();
}
项目:communote-server
文件:ValidationHelper.java
/**
* Validates a string by regex expression
*
* @param input
* the input of a form field.
* @param regex
* a regular expression for the given string, can be {@code null}
* @param fieldName
* Name of the field the check is against.
* @param errors
* The errors to put the error into.
* @return The message key for the error.
*/
private static String doValidationAgainstRegex(String input, String regex, String fieldName,
Errors errors) {
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input == null ? "" : input);
if (!matcher.matches()) {
errors.rejectValue(fieldName, getRegexErrorMessageKey(regex),
new Object[] { getRegexForDisplay(regex) }, "");
return getRegexErrorMessageKey(regex);
}
MatchResult res = matcher.toMatchResult();
if (res.start() != 0 || res.end() != input.length()) {
errors.rejectValue(fieldName, getRegexErrorMessageKey(regex),
new Object[] { getRegexForDisplay(regex) }, "");
return getRegexErrorMessageKey(regex);
}
return null;
}
项目:intellij-ce-playground
文件:AbstractEditorTest.java
/**
* Setups document of the {@link #getEditor() current editor} according to the given text that is expected to contain
* information about document lines obtained from the {@link DocumentImpl#dumpState()}.
*
* @param data string representation of the target document's lines
*/
@SuppressWarnings("UnusedDeclaration")
protected static void setupDocument(@NotNull String data) {
Scanner scanner = new Scanner(data);
Pattern pattern = Pattern.compile("(\\d+)\\s*:\\s*(\\d+)\\s*-\\s*(\\d+)");
StringBuilder buffer = new StringBuilder();
while (scanner.findInLine(pattern) != null) {
final MatchResult match = scanner.match();
int startOffset = Integer.parseInt(match.group(2));
int endOffset = Integer.parseInt(match.group(3));
buffer.append(StringUtil.repeatSymbol('a', endOffset - startOffset)).append('\n');
}
if (buffer.length() > 0) {
buffer.setLength(buffer.length() - 1);
}
myEditor.getDocument().setText(buffer.toString());
}
项目:openddr-java
文件:WinCEMozillaSubBuilder.java
private void setWinCeVersion(OperatingSystem model) {
//TODO: to be refined
String osV = model.getVersion();
if (osV == null) {
return;
} else if (!model.getMajorRevision().equals("1")) {
return;
}
if (osV.matches(".*(\\d+).(\\d+).(\\d+).(\\d+).*")) {
Scanner s = new Scanner(osV);
s.findInLine(".*(\\d+).(\\d+).(\\d+).(\\d+).*");
MatchResult result = s.match();
if (result.group(1).equals("4")) {
model.setMajorRevision("5");
} else if (result.group(1).equals("6")) {
model.setMajorRevision("6");
if (result.group(3).equals("7")) {
model.setMinorRevision("1");
}
}
}
}
项目:MyVidCoRe
文件:MatcherStream.java
/**
* Find with {@ink Pattern} within input and return as {@ink MatchResult} stream.
*
* @param pattern the pattern
* @param input the input
* @return the stream
*/
public static Stream<MatchResult> findMatches(Pattern pattern, CharSequence input) {
Matcher matcher = pattern.matcher(input);
Spliterator<MatchResult> spliterator = new Spliterators.AbstractSpliterator<MatchResult>(
Long.MAX_VALUE, Spliterator.ORDERED | Spliterator.NONNULL) {
@Override
public boolean tryAdvance(Consumer<? super MatchResult> action) {
if (!matcher.find())
return false;
action.accept(matcher.toMatchResult());
return true;
}
};
return StreamSupport.stream(spliterator, false);
}
项目:EvenWurse
文件:JGoogleAnalyticsTracker.java
/**
* Define the proxy to use for all GA tracking requests.
* <p>
* Call this static method early (before creating any tracking requests).
*
* @param proxyAddr
* "addr:port" of the proxy to use; may also be given as URL
* ("http://addr:port/").
*/
public static void setProxy(String proxyAddr) {
if (proxyAddr != null) {
String oldProxyAddr = proxyAddr;
// Split into "proxyAddr:proxyPort".
proxyAddr = null;
int proxyPort = 8080;
try (Scanner s = new Scanner(oldProxyAddr)) {
s.findInLine("(http://|)([^:/]+)(:|)([0-9]*)(/|)");
MatchResult m = s.match();
if (m.groupCount() >= 2) proxyAddr = m.group(2);
if (m.groupCount() >= 4 && !(m.group(4).length() == 0)) proxyPort = Integer.parseInt(m.group(4));
}
if (proxyAddr != null) {
SocketAddress sa = new InetSocketAddress(proxyAddr, proxyPort);
setProxy(new Proxy(Type.HTTP, sa));
}
}
}
项目:streamflyer
文件:EmbeddedFlagUtilTest.java
private MatchResult match(String input, String regex, int flags, boolean matchExpected) {
// match with flags
Matcher matcher = Pattern.compile(regex, flags).matcher(input);
assertEquals(matchExpected, matcher.find());
MatchResult result = matcher;
// match with inline flags
Matcher matcherInline = Pattern.compile(util.embedFlags(regex, flags)).matcher(input);
assertEquals(matchExpected, matcherInline.find());
MatchResult resultInline = matcherInline;
if (matchExpected) {
assertEqualMatchResult(result, resultInline);
}
return result;
}
项目:nexus-public
文件:RegexMatcher.java
@Override
public boolean matches(final Context context) {
checkNotNull(context);
String path = context.getRequest().getPath();
log.debug("Matching: {}~={}", path, pattern);
final java.util.regex.Matcher m = pattern.matcher(path);
if (m.matches()) {
// expose match result in context
context.getAttributes().set(State.class, new State()
{
@Override
public MatchResult getMatchResult() {
return m;
}
});
return true;
}
// no match
return false;
}
项目:jfiveparse
文件:TokenizerTest.java
@SuppressWarnings("unchecked")
@Test
public void test() {
// unescape
if (desc.doubleEscaped != null && desc.doubleEscaped) {
Replacer doubleEscapedUnicode = new Replacer() {
@Override
public String apply(MatchResult result) {
int val = Integer.parseInt(result.group(1), 16);
return new String(new char[] { ((char) val) });
}
};
String newInput = replaceAll(desc.input, "\\\\u([\\d\\w]{4})", doubleEscapedUnicode);
desc.input = newInput;
for (Object o : desc.output) {
if (isCharacterToken(o) || isCommentToken(o)) {
List<String> token = (List<String>) o;
token.set(1, replaceAll(token.get(1), "\\\\u([\\d\\w]{4})", doubleEscapedUnicode));
}
}
}
checkSingleTest(desc, state);
}
项目:streamflyer
文件:StateMachine.java
@Override
public MatchProcessorResult process(StringBuilder characterBuffer, int firstModifiableCharacterInBuffer,
MatchResult matchResult) {
// modify stream
MatchProcessorResult result = transitions.process(characterBuffer, firstModifiableCharacterInBuffer,
matchResult);
// change state if needed
State newState = transitions.pollNewState();
if (newState != currentState) {
changeStateTo(newState);
}
return result;
}
项目:inbot-utils
文件:MiscUtils.java
public static Stream<MatchResult> streamMatches(Matcher matcher) {
// thank you SO: https://stackoverflow.com/questions/28148483/how-do-i-create-a-stream-of-regex-matches
Spliterator<MatchResult> spliterator = new Spliterators.AbstractSpliterator<MatchResult>(Long.MAX_VALUE, Spliterator.ORDERED|Spliterator.NONNULL) {
@Override
public boolean tryAdvance(Consumer<? super MatchResult> action) {
if(!matcher.find()) {
return false;
} else {
action.accept(matcher.toMatchResult());
return true;
}
}};
return StreamSupport.stream(spliterator, false);
}
项目:streamflyer
文件:NoMatchAwareMatchProcessor.java
@Override
public MatchProcessorResult process(StringBuilder characterBuffer, int firstModifiableCharacterInBuffer,
MatchResult matchResult) {
// are there characters that belong to a noMatch?
if (processNoMatch && noMatch.getStartPosition() < matchResult.start()) {
// -> process the noMatch
matchResult = noMatch.processNoMatch(characterBuffer, firstModifiableCharacterInBuffer, matchResult);
}
MatchProcessorResult result = delegate.process(characterBuffer, firstModifiableCharacterInBuffer, matchResult);
// set the start position of the next noMatch
noMatch.setStartPosition(result.getFirstModifiableCharacterInBuffer());
return result;
}