java - 使用 find() 方法第一个实例不匹配

标签 java regex

我正在搜索正斜杠之间带有数字的子字符串(例如/n/),但 find() 方法始终传递第一次出现的正则表达式。 为什么?我的正则表达式有问题吗?

Pattern p = Pattern.compile("(\\/)(\\d+)(\\/)"); 
Matcher m = p.matcher("A/8/E/5/F/6/G/7/H");
while (m.find()) {
    System.out.println(m.group(0));
}

最佳答案

如果您只想打印数字,请使用m.group(2)

System.out.println(m.group(2));

另一个解决方案是使用lookahead and lookbehind

Pattern p = Pattern.compile("(?<=\\/)(\\d+)(?=\\/)");
Matcher m = p.matcher("A/8/E/5/F/6/G/7/H");
while (m.find()) {
    System.out.println(m.group(0));
}

关于java - 使用 find() 方法第一个实例不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16230586/

相关文章:

java - 正则表达式只接受字母和空格,不允许在字符串的开头和结尾有空格

java - 根据某些值在java中分割字符串

Java Game Server线程安全接收websocket消息

python - 在 django/python 中检查电子邮件的有效性

python - 我如何使用正则表达式 python 提取引号内的值?

javascript - 如何使用 Javascript 根据某些动态选择的值设置下拉列表的值?

c# - 使用 RegEx 读取 CSV 文件

java - 解析包含字母和数字的字符串

java - 如何在 Spring Data JPA 中使用 After 和 Equals 创建方法名称?

java - 添加新组件后自动更新 JFrame 大小