簡體   English   中英

查找Java中特定開始/結束字符串之間的所有匹配子字符串

[英]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)將允許任意重復捕獲組,但是僅捕獲與該組的最后一個匹配項。 通過使用循環,您可以從字符串中查找並捕獲多個匹配組。

這是從Oracle文檔中獲取的這種循環的示例:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM