我使用Matcher
Java中的正则表达式来捕获组,IllegalStateException
即使我知道表达式匹配,它也会不断抛出一个。
这是我的代码:
String safeName = Pattern.compile("(\\.\\w+)$").matcher("google.ca").group();
我期待safeName
是.ca
因为在正则表达式的捕获组拍摄的,而是我得到:
IllegalStateException:找不到匹配项
我也尝试过.group(0)
,.group(1)
但发生相同的错误。
根据该文件group()
,并group(int group)
:
捕获组从左到右从一个索引开始。零组表示整个模式,因此表达式
m.group(0)
等于m.group()
。
我究竟做错了什么?
Matcher
是帮助程序类,它处理数据迭代以搜索与正则表达式匹配的子字符串。整个字符串可能包含许多可以匹配的子字符串,因此通过调用group()
您无法指定您对哪个实际匹配感兴趣。要解决此问题,Matcher允许您遍历所有匹配的子字符串,然后使用您感兴趣的零件。
因此,在使用前,group
需要让Matcher遍历字符串以find()
匹配正则表达式。要检查正则表达式是否匹配整个String,我们可以使用matches()
method而不是find()
。
通常可以找到我们正在使用的所有匹配子字符串
Pattern p = Pattern.compiler("yourPattern");
Matcher m = p.matcher("yourData");
while(m.find()){
String match = m.group();
//here we can do something with match...
}
由于您假设要查找的文本在字符串中(末尾)仅存在一次,因此不需要使用循环,但是简单的if
(或条件运算符)应该可以解决您的问题。
Matcher m = Pattern.compile("(\\.\\w+)$").matcher("google.ca");
String safeName = m.find() ? m.group() : null;
这是一个示例文本:。我无法修改输入文本,我正在从文件中读取长字符串文本。 我想提取以下内容:,,, 为此,我编写了以下正则表达式模式: 我正在使用和类,但是我的Matcher无法使用前面提到的正则表达式找到模式。我在一些在线regex网站上用文本测试了这个regex,令人惊讶的是,它在那里工作。 我哪里做错了? 原始代码: 输出:未打印任何内容
我在angular 5中实现了一个模式,在.ts文件中使用以下代码进行密码验证。这样做的目的是支持至少八个字符,至少一个大写字母、一个小写字母、一位数字和一个特殊字符。请参阅:密码的Regex必须包含至少八个字符、至少一个数字以及大小写字母和特殊字符 我明白了,当我在密码文本框中输入一个字符串时,例如< code>Niladri1!然而,当我输入一个类似于< code>Nopasss123!!,它
本文向大家介绍OCaml 具有模式匹配的递归列表处理,包括了OCaml 具有模式匹配的递归列表处理的使用技巧和注意事项,需要的朋友参考一下 示例 在这里,我们演示了如何使用OCaml的模式匹配语法来递归处理列表。 在这种情况下,模式[]匹配空列表,而hd::tl匹配任何具有至少一个元素的列表,hd并将列表的第一个元素分配给,列表的其余部分(可以为空)分配给tl。 请注意,这hd::tl是一种非常通
一、模式匹配 Scala 支持模式匹配机制,可以代替 swith 语句、执行类型检查、以及支持析构表达式等。 1.1 更好的swith Scala 不支持 swith,可以使用模式匹配 match...case 语法代替。但是 match 语句与 Java 中的 switch 有以下三点不同: Scala 中的 case 语句支持任何类型;而 Java 中 case 语句仅支持整型、枚举和字符串常
主机权限和 内容脚本匹配 是基于匹配模式定义的一组 URL。匹配模式本质上是一个以允许的 schema(http,https,file 或ftp 开头)的URL,并且可以包含 “*” 字符。特殊模式 < all_urls > 匹配以允许的 schema 开头的任何 URL。 每个模式包含 3 个部分: schema - 例如,http 或file 或 * 注意:对文件 URL 的访问不是自动的。用
MySQL提供了一个标准的SQL模式匹配,和基于扩展的正则表达式的模式匹配Unix工具(如vi,grep,sed)一样。 SQL模式匹配可以使用“_“来匹配任意单个字符,”%“可以用来匹配任意数量(包含0个字符)的字符。在MySQL中,SQL模式匹配的大小写默认是不敏感的,以下有一些例子,当你在使用SQL模式时,不要使用 = 或 <>,而是使用LIKE 或 NOT LIKE。 要找到以字符“b"开