我正在尝试创建一个正则表达式来捕获两个捕获组之间的令牌。
示例输入
Added experiencevalidator [Java] [Spring]
1. Added validators [Java] [Spring]
2. Fixed issues with deletes [JPA] [Java]
基本上我想捕获编号(1.,2.)和标签([Java] [Spring])之间的标记。
预期捕获
匹配器应为每一行返回以下内容:
Added experiencevalidator
Added validators
Fixed issues with deletes
我目前正在使用这段代码,它利用了积极的前瞻和后瞻。
private Pattern TITLE_REGEX = Pattern.compile("(?<=\\d\\.\\s)(.*?)(?=\\[.*)");
private String cleanseTitle(String title){
Matcher m = TITLE_REGEX.matcher(title);
if(m.find()){
System.out.println("Match found");
System.out.println(m.group(1));;
}else{
System.out.println("No Match");
}
return title;
}
每行都cleanseTitle
通过 title 参数传递给方法。我的问题是我不确定如何处理前面没有编号的行。该代码当前正确处理前面有编号的行,但是那些前面没有编号的行返回不匹配。
任何人都可以为我提供一个正则表达式来处理前面有编号的行或前面没有编号的行吗?我对任何正则表达式解决方案持开放态度,而且我不喜欢我当前的正则表达式,因此请随时更改它。任何可以帮助我了解更多有关正则表达式的随附解释也值得赞赏。