Có phương pháp tích hợp sẵn không? Không phải là tôi biết. Tuy nhiên, nó nên được khá dễ dàng để làm điều đó cho mình. Dưới đây là một số mã hoàn toàn chưa được kiểm tra mà nên cung cấp cho bạn những ý tưởng cơ bản:
import java.util.regex.Pattern;
import java.util.ListIterator;
import java.util.ArrayList;
/**
* Finds the index of all entries in the list that matches the regex
* @param list The list of strings to check
* @param regex The regular expression to use
* @return list containing the indexes of all matching entries
*/
List<int> getMatchingIndexes(List<String> list, String regex) {
ListIterator<String> li = list.listIterator();
List<int> indexes = new ArrayList<int>();
while(li.hasNext()) {
int i = li.nextIndex();
String next = li.next();
if(Pattern.matches(regex, next)) {
indexes.add(i);
}
}
return indexes
}
tôi có thể có việc sử dụng Pattern và ListIterator phần một chút sai (tôi chưa từng sử dụng một trong hai), nhưng đó phải cung cấp cho các ý tưởng cơ bản. Bạn cũng có thể làm một vòng lặp đơn giản thay vì vòng lặp while trong trình vòng lặp.
Bạn có thể thực hiện không tốt hơn nếu bạn đặt các chuỗi của bạn vào Danh sách. Regex của bạn luôn là tiền tố hay bạn muốn xử lý bất kỳ regex nào? – erickson
Vậy tôi nên sử dụng cấu trúc dữ liệu nào? Regex của tôi luôn là tiền tố. – kmilo
Tôi recomment một số cấu trúc dữ liệu automata. https://en.wikipedia.org/wiki/Trie –