regex - java regex pattern.compile Vs 匹配器
问题描述
我试图使用 java.regex.patterns 查找一个单词是否包含连续相同的字符串,同时使用匹配器测试正则表达式,它返回 true。但是如果我只这样使用:
System.out.println("test:" + scanner.hasNext(Pattern.compile("(a-z)\\1")));
它返回false。
public static void test2() {
String[] strings = { "Dauresselam", "slab", "fuss", "boolean", "clap", "tellme" };
String regex = "([a-z])\\1";
Pattern pattern = Pattern.compile(regex);
for (String string : strings) {
Matcher matcher = pattern.matcher(string);
if (matcher.find()) {
System.out.println(string);
}
}
}
这返回真。哪一个是正确的。
解决方案
该模式([a-z])\\1
使用捕获组来匹配单个小写字符,然后对组 1 中捕获的内容进行反向引用。
例如,如果您有Dauresselam
,它将匹配s
捕获组中的第一个,然后匹配第二个s
。因此,如果您想匹配连续的字符,您可以使用该模式。
该模式(a-z)\\1
使用捕获组进行a-z
字面匹配,然后使用对组 1 中捕获的内容的反向引用。所以这将匹配a-za-z
推荐阅读
- proof - 将 Bits8 转换为 `Subset Nat (`LT` 256)`
- c# - Xamarin Forms 使用 SQL 编辑项目
- machine-learning - 对 CNN 中跳过层的实现感到困惑
- angular - 角度单选按钮标签不显示正确
- python - 我在 selenium 中有这个错误:(消息:过时的元素引用:元素未附加到页面文档)
- flutter - 我遇到了这个问题->找不到 androidx.appcompat:appcompat:26.1.0
- javascript - 使用 iText5 给定组合框字段选择,添加一个操作以导航到 pdf 中的页面
- snowflake-cloud-data-platform - SQL联合运算符?连接具有不同列数的 2 个表
- php - 如何显示已确认或未确认关注列表的组织
- sql - 直接从 SQL 脚本连接到 Quickbooks Online(传入 Oauth2)