[英]Finding all matching substrings between specific start/end strings in Java
這是我需要做的:
我有一個長字符串,格式如下
com.example.TEXT A TO BE EXTRACTED at com.example.TEXT B to be extracted at org.xample.SOME OTHER TEXT at...
我想得到
TEXT A TO BE EXTRACTED
TEXT B TO BE EXTRACTED
但沒有SOME OTHER TEXT
我不是非常擅長正則表達式,而在Java中則完全沒有。 在JavaScript中,我可以得到第一個匹配項
var re = /com\.example\.(.*) at/;
s = 'com.example.abcde at';
var m = s.match(re);
會in
m [1]中產生àbcde
我怎樣才能
在Java中做等效的事情
獲得所有比賽
這里的上下文是一個Android應用程序。 我遇到了對Apache StringUtils類及其stringbetween
方法的引用。 除了我無法找到相關的JAR文件之外,我真的很想避免僅出於此需要而向我的應用程序添加一個JAR。
我應該提到的是,我正在使用Java 8,並且不需要針對Android 4.4.2以上的版本。
正則表達式不能重復捕獲組並一次通過捕獲與該組的所有匹配項。 正則表達式引擎(包括Java)將允許任意重復捕獲組,但是僅捕獲與該組的最后一個匹配項。 通過使用循環,您可以從字符串中查找並捕獲多個匹配組。
Pattern pattern =
Pattern.compile(console.readLine("%nEnter your regex: "));
Matcher matcher =
pattern.matcher(console.readLine("Enter input string to search: "));
boolean found = false;
while (matcher.find()) {
console.format("I found the text" +
" \"%s\" starting at " +
"index %d and ending at index %d.%n",
matcher.group(),
matcher.start(),
matcher.end());
found = true;
}
if(!found){
console.format("No match found.%n");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.