java - 如何在正则表达式中创建多个组?
问题描述
从字符串中,我需要一组源即 beforeTO
和目标即 after TO
。有了这个,我需要来自源的子组,即(3:8)
单个正则表达式模式。
MOVE A (3:8) TO B.
解决方案
很难猜测这里可能需要什么,我会说可能类似于:
([^(]+(\(.+?\)))\s*TO\s*(.*)
演示
测试
import java.util.regex.Matcher;
import java.util.regex.Pattern;
final String regex = "([^(]+(\\(.+?\\)))\\s*TO\\s*(.*)";
final String string = "MOVE A (3:8) TO B\n";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
推荐阅读
- go - gorm 预加载不适用于对象集合吗?
- swiftui - GeometryReader 更新后损坏
- python - 无法通过终端安装 pipenv (Python)
- node.js - “请求超时”H12 Heroku 错误绑定访问 MongoDB Atlas
- r - 嵌套在 R 中的 sapply - 击穿
- php - 双重显示来自laravel数据库的一些数据
- javascript - 如何使用谷歌脚本从谷歌表格中提取特定列到谷歌文档?
- apache-camel - Apache Camel Cron 作业调度与quartz2
- javascript - tiff.js 使用 Tampermonkey 无法显示多页 tiff
- java - 只是被这个问题困住了。java IO 难度不大