无涯教程-Java 正则 - Matcher usePattern函数

37 阅读1分钟

java.util.regex.Matcher.usePattern(Pattern newPattern)方法更改此Matcher用于查找匹配项的模式。

Matcher usePattern - 声明

public Matcher usePattern(Pattern newPattern)
  • newPattern   -  此匹配器使用的新模式。

Matcher usePattern - 返回值

这个匹配器。

Matcher usePattern - 异常

  • IllegalArgumentException   -  如果newPattern为null。

Matcher usePattern - 示例

下面的示例显示java.util.regex.Matcher.usePattern(Pattern newPattern)方法的用法。

package com.learnfk;

import java.util.regex.Matcher; import java.util.regex.Pattern;

public class MatcherDemo { private static String REGEX = "(a*b)(foo)"; private static String INPUT = "aabfooaabfooabfoob";

public static void main(String[] args) { //创建一个模式 Pattern pattern = Pattern.compile(REGEX);

  </span><span class="com">//获取匹配器对象</span><span class="pln">
  </span><span class="typ">Matcher</span><span class="pln"> matcher </span><span class="pun">=</span><span class="pln"> pattern</span><span class="pun">.</span><span class="pln">matcher</span><span class="pun">(</span><span class="pln">INPUT</span><span class="pun">);</span><span class="pln"> 
  
  </span><span class="kwd">while</span><span class="pun">(</span><span class="pln">matcher</span><span class="pun">.</span><span class="pln">find</span><span class="pun">())</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
     </span><span class="com">//打印给定组捕获的子序列的开始索引。</span><span class="pln">
     </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"Second Capturing Group, (foo) Match String start(): "</span><span class="pun">+</span><span class="pln">matcher</span><span class="pun">.</span><span class="pln">start</span><span class="pun">(</span><span class="lit">1</span><span class="pun">));</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">  
  matcher</span><span class="pun">.</span><span class="pln">reset</span><span class="pun">();</span><span class="pln">
  matcher</span><span class="pun">.</span><span class="pln">usePattern</span><span class="pun">(</span><span class="typ">Pattern</span><span class="pun">.</span><span class="pln">compile</span><span class="pun">(</span><span class="str">"(a*b)(foob)"</span><span class="pun">));</span><span class="pln">
  
  </span><span class="kwd">while</span><span class="pun">(</span><span class="pln">matcher</span><span class="pun">.</span><span class="pln">find</span><span class="pun">())</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
     </span><span class="com">//打印给定组捕获的子序列的开始索引。</span><span class="pln">
     </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"Second Capturing Group, (fooab) Match String start(): "</span><span class="pun">+</span><span class="pln">matcher</span><span class="pun">.</span><span class="pln">start</span><span class="pun">(</span><span class="lit">1</span><span class="pun">));</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">  

} }

让无涯教程编译并运行以上程序,这将产生以下输出-

Second Capturing Group, (foo) Match String start(): 0
Second Capturing Group, (foo) Match String start(): 6
Second Capturing Group, (foo) Match String start(): 12
Second Capturing Group, (fooab) Match String start(): 12

参考链接

www.learnfk.com/javaregex/j…