2017-02-24 36 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")。通过这种方式,当您更改输入文本或添加/删除某些组时,您的组名称将保持不变。 :)