2017-02-24 78 views
-4

我正在將一個文件的某些內容與正則表達式匹配並從中獲取組。我怎樣才能得到每個匹配組的開始和結束位置? 需要位置替換那些部分 有什麼建議嗎?Java中一個模式的每個匹配器組的索引

+2

你能提供一些例子,像這樣沒有人能理解你 –

+2

你不需要這些職位,你的方法是一個黑客的東西。 'String#replaceAll()'可能可以做你想到的。 –

回答

0

,您可以直接與replaceAll function更換您所需的內容:

此方法替換此字符串與給定替換給定的正則表達式匹配的每個子字符串。

然後,你可以用它喜歡:

replaceAll("[0-9]", "X"); 

希望它可以幫助你!

1

下面的代碼打印匹配正則表達式和文本中的起始和結束位置的文本:

String text = "a long text regex to match"; 
Matcher m = Pattern.compile("regex").matcher(text); 

while (m.find()){ 
    String found = m.group(); 
    System.out.println(found + " " + m.start() + " " + m.end()); 
} 
0

您正在尋找方法m.start(int groupId)m.end(int groupId)

Java文檔: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html#start(int)

在這種情況下,我會考慮使用命名捕獲組(?<GROUP-NAME>YOUR_REGEX)和方法m.start("GROUP-NAME")m.end("GROUP-NAME")。通過這種方式,當您更改輸入文本或添加/刪除某些組時,您的組名稱將保持不變。 :)

相關問題