JAVA的正则表达式目前还不支持平衡组,要实现匹配括号只有定制深度。
其原理就是不断循环匹配括号里的内容和括号后面的内容(\\([^\\(\\)]*\\)[^\\(\\)]*)*
例子:
//匹配二级括号 String str="(a(b))"; String regex = "\\([^\\(\\)]*(\\([^\\(\\)]*\\)[^\\(\\)]*)*\\)"; //匹配三级括号 String str="(a(b(c)))"; String regex = "\\([^\\(\\)]*(\\([^\\(\\)]*(\\([^\\(\\)]*\\)[^\\(\\)]*)*\\)[^\\(\\)]*)*\\)"; //匹配四级括号 String str="(a(b(c(d))))"; String regex = "\\([^\\(\\)]*(\\([^\\(\\)]*(\\([^\\(\\)]*(\\([^\\(\\)]*\\)[^\\(\\)]*)*\\)[^\\(\\)]*)*\\)[^\\(\\)]*)*\\)"
也可以利用非贪婪模式匹配(注:JAVA默认是贪婪模式)
String subStr = "(a.id(b(c(d(e(f))))))id" String regex= "\\([^\\(\\)]*(\\(.*?\\)[^\\(\\)]*)*\\)\\w+[, ]*";
这里顺便说一下贪婪和非贪婪的匹配原理:
a) 如果是贪婪匹配模式则匹配结果为最长匹配,正则表达式引擎会一直匹配到字符串最后,当匹配为false时,通过回溯的方式,倒退找到倒数第一个匹配位置,返回匹配结果
String str = "(a)(b)(c)(d)(e)"; String regex = "\\(.*\\)"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(str); System.out.println("replace: "+str.replaceAll(regex, "O")); while (matcher.find()) { System.out.println("matcher: " + matcher.group(0)); }
输出:
replace:O
matcher: (a)(b)(c)(d)(e)
b) 如果是非贪婪匹配模式则匹配结果为最短匹配,正则表达式引擎会匹配到符合pattern的末尾位置那个字符,然后再往后走一步,发现匹配为false, 又回溯到找到回退的最近一个匹配为true的位置,返回结果。
String str = "(a)(b)(c)(d)(e)"; String regex = "\\(.*?\\)"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(str); System.out.println("replace: "+str.replaceAll(regex, "O")); while (matcher.find()) { System.out.println("matcher: " + matcher.group(0)); }
输出:
replace: OOOOO
matcher: (a)
matcher: (b)
matcher: (c)
matcher: (d)
matcher: (e)
相关推荐
`group(0)`返回整个匹配的子串,`group(1)`返回第一个括号中的子表达式匹配的子串,以此类推。 - `start()`和`end()`: 分别返回匹配子串的起始和结束位置。 - `replaceAll()`: 使用正则表达式替换所有匹配的部分。 -...
Java正则表达式是Java语言中用于处理字符串的强大工具,它允许程序员进行复杂的字符串匹配、查找和替换操作。正则表达式(Regular Expression)是一种模式匹配语言,通过特定的语法来描述字符串的模式,用于在文本中...
以下是对这些文档标题所涉及的Java正则表达式知识点的详细解释: 1. **正则表达式之道** 这个主题可能涵盖了正则表达式的基础概念,包括元字符、字符类、量词和分组。元字符如`.`代表任意字符,`^`表示行首,`$`...
### 常用Java正则表达式知识点 #### 一、引言 正则表达式是一种强大的工具,用于处理文本并查找模式。多种编程语言,包括Perl、PHP、Python、JavaScript以及Java等均内置了对正则表达式的支持。本文将详细介绍Java...
Java正则表达式是一种强大的文本处理工具,广泛用于验证字符串、查找特定模式和替换文本。在Java中,正则表达式提供了简洁而灵活的方式来处理字符串,使得编程人员能够以更高效的方式实现各种文本操作。 正则表达式...
Java正则表达式是Java编程语言中用于处理字符串的强大工具,它允许我们通过模式匹配来查找、替换或分割文本。在Android开发中,正则表达式尤其重要,因为它们可以帮助我们验证用户输入、处理文本数据或者进行复杂的...
Java正则表达式是Java编程语言中用于处理字符串的强大工具,它允许程序员通过模式匹配来查找、替换或分割文本。在Java中,正则表达式是通过`java.util.regex`包提供的API来实现的。本讲解将深入探讨Java正则表达式的...
Java正则表达式库是Java开发中不可或缺的一部分,它为开发者提供了一种强大的文本匹配工具。在Java中,正则表达式(Regular Expression)是一种模式匹配语言,用于处理字符串操作,如查找、替换或提取特定模式的数据...
### Java正则表达式详解 #### 一、正则表达式的重要性及应用 正则表达式,作为一种强大的文本处理工具,对于程序员而言是不可或缺的基本技能之一。它在文本的匹配、搜索和替换等方面发挥着不可替代的作用。尤其在...
Java正则表达式是Java编程语言中用于处理字符串的强大工具,它允许程序员通过模式匹配来查找、替换或分割文本。本教程将深入讲解Java中的正则表达式,并提供丰富的实例来帮助开发者理解和应用这些概念。 1. 正则...
Java正则表达式是Java编程语言中的一个强大工具,它用于模式匹配和字符串处理,尤其在数据验证、文本检索和替换等方面发挥着重要作用。本教程是专为初学者设计的HTML版,旨在帮助读者快速掌握Java正则表达式的概念和...
Java正则表达式是Java编程语言中的一个强大工具,它用于模式匹配和字符串处理。正则表达式(Regular Expression)是一串特殊的字符序列,可以用来匹配或查找其他字符串中的模式。在Java中,正则表达式的操作主要通过...
Java正则表达式是Java编程语言中的一个强大工具,用于处理字符串模式匹配和搜索替换操作。它是基于Perl和POSIX正则表达式的实现,提供了一种灵活且强大的方式来处理文本数据。本文件"java正则表达式详解(PDF)"深入...
Java正则表达式是Java编程语言中用于处理字符串的强大工具,它允许程序员通过模式匹配来查找、替换或分割文本。正则表达式在各种场景下都有广泛应用,如数据验证、文本提取、搜索替换等。本篇文章将深入探讨Java中的...
在IT领域,正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,它能够进行复杂的模式匹配、查找、替换等操作。在本话题中,我们将探讨如何使用PowerBuilder 11.5这一经典的开发环境来实现正则...
`matches()`检查整个字符串是否与正则表达式匹配,`find()`在字符串中查找满足条件的子串,而`lookingAt()`则从字符串开头检查匹配。 正则表达式还可以进行替换操作,`replaceAll()`和`replaceFirst()`方法分别替换...