Java中具有示例的Matcher useTransparentBounds()方法
java.util.regex.Matcher类表示执行各种匹配操作的引擎。此类没有构造函数,可以使用matches()
类java.util.regex.Pattern的方法创建/获取此类的对象。
在正则表达式中,lookbehind和lookahead构造用于匹配在某些其他模式之前或之后的特定模式。例如,如果您需要接受5到12个字符的字符串,则正则表达式将为-
"\\A(?=\\w{6,10}\\z)";
默认情况下,匹配器区域的边界对于构造向前看,向后看和边界匹配并不透明,即这些构造不能匹配超出区域边界的输入文本内容-
例子1
import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class useTransparentBoundsExample { public static void main(String[] args) { //正则表达式可以接受6到10个字符 String regex = "\\A(?=\\w{6,10}\\z)"; System.out.println("Enter 5 to 12 characters: "); String input = new Scanner(System.in).next(); //创建一个模式对象 Pattern pattern = Pattern.compile(regex); //创建一个Matcher对象 Matcher matcher = pattern.matcher(input); //将区域设置为输入字符串 matcher.region(0, 4); //切换到透明范围 if(matcher.find()) { System.out.println("Match found"); } else { System.out.println("Match not found"); } } }
输出结果
Enter 5 to 12 characters: sampleText Match not found
此类方法的useTransparentBounds()方法接受布尔值,如果将true传递给此方法,则当前匹配器将使用透明范围,如果将false传递给此方法,则将使用非透明范围。
例子2
import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Example { public static void main(String[] args) { //正则表达式可以接受6到10个字符 String regex = "\\A(?=\\w{6,10}\\z)"; System.out.println("Enter 5 to 12 characters: "); String input = new Scanner(System.in).next(); //创建一个模式对象 Pattern pattern = Pattern.compile(regex); //创建一个Matcher对象 Matcher matcher = pattern.matcher(input); //将区域设置为输入字符串 matcher.region(0, 4); //切换到透明范围 matcher = matcher.useTransparentBounds(true); if(matcher.find()) { System.out.println("Match found"); } else { System.out.println("Match not found"); } } }
输出结果
Enter 5 to 12 characters: sampletext Match found