greedy, reluctant, possessive 三种匹配模式在 http://docs.oracle.com/javase/tutorial/essential/regex/quant.html有详细介绍,
greedy表示每次eat entire string, if not matched, back off one character step by step until matches, so for the remaining string; reluctant means eat "nothing" at first, if not matched, then eat one character step by step until matches, so for the remaining string; possessive is like greedy, eat the entire string at first, but it never backs off any character if not matched.
关于jdk api中的Special constructs (named-capturing and non-capturing):
(?:X)表示不将X捕获为一个组
Pattern p = Pattern.compile("windows(?:98)(OS)");
String str = "windows98OS";
Matcher m = p.matcher(str);
while(m.find()){
System.out.println(m.group(1));
System.out.println(m.groupCount());
}
结果:
OS
1
其中group(0)表示entire string, 并不包含在groupCount里,这里要注意。上面代码可以看出98并没有被捕获成一个组。
其中(?=X)表示lookahead, 存在X
//positive lookahead
Pattern p = Pattern.compile("windows(?=98)");
String str = "windows98OS";
Matcher m = p.matcher(str);
while(m.find()){
System.out.println(m.group());
System.out.println(m.groupCount());
}
输出:
windows
0
其中(?=98)只是做为判断条件,并不consume字符,因此98也参与下次的匹配。
windows(?=98)表示windows后面要有98,否则不匹配,但98并不参与匹配。
(?!X) 表示negative lookahead, negative表示否定,即不能为。
(?<X) positive lookbehind, 向后找,存在X
(?<!X) negative lookbehind, 向后找,不存在X
Pattern p = Pattern.compile("windows98(?<!95)");
String str = "windows98OS";
Matcher m = p.matcher(str);
while(m.find()){
System.out.println(m.group());
System.out.println(m.groupCount());
}
注意:(?X) (?<X) 等这些都不消耗字符,也就不包含在组里,只是纯粹的判断条件。
还有一个 (?>X) X, as an independent, non-capturing group, 不知道怎么用,知道的兄弟请给我留言。
JS正则:参考 http://www.jb51.net/article/28007.htm http://www.2cto.com/kf/201204/128406.html http://blog.csdn.net/ethanq/article/details/6869055
下面是群里一兄弟问的问题,一个字符串,如果末尾是数字则返回所有数字,如果没数字,返回0,例如4323Fasfa143, 则返回143, fasfa343a 返回0
下面分别是java和js版本
String str = "4324Ad34FDAsd243";
Pattern p = Pattern.compile("^(\\w*?)(\\d+)$");
Matcher m = p.matcher(str);
boolean found = false;
while(m.find()){
found = true;
System.out.println(m.group());
System.out.println(m.group(2));
}
if(!found){
System.out.println(0);
}
<SCRIPT>
var reg = /^([\W\w]*?)(\d+)$/ig
var str = '432fdsafa243fafa1343';
var arr = reg.exec(str);
alert(arr[2]);
</SCRIPT>
其中js版本中要判断下reg.exec是否返回null,返回null表示末尾不是数字。
分享到:
相关推荐
标题中的“ibatis例子加教程&java&javascript&dhtml&正则表达式工具”涵盖了五个主要的IT技术领域:iBATIS、Java、JavaScript、DHTML和正则表达式。接下来,我们将深入探讨这些技术及其相关的知识点。 1. iBATIS: ...
JavaScript&正则表达式JavaScript&正则表达式JavaScript&正则表达式JavaScript&正则表达式JavaScript&正则表达式JavaScript&正则表达式JavaScript&正则表达式JavaScript&正则表达式JavaScript&正则表达式JavaScript&...
**Java与JavaScript正则表达式详解** 在编程领域,正则表达式(Regular Expression)是一种强大的文本处理工具,尤其在处理字符串匹配、查找、替换和提取等任务时,它的功能尤为强大。Java和JavaScript虽然源自不同...
"JS正则表达式大全.doc"可能包含JavaScript正则表达式的全面指南,包括所有可用的特性和常见应用场景;"zzbds.txt"可能是某个特定的正则表达式示例或测试数据集,用于实践和学习。 通过学习和熟练掌握这些知识点,...
正则表达式是一种强大的文本处理工具,用于在Java和JavaScript中进行字符串匹配、搜索、替换等操作。在编程中,正则表达式是处理文本数据不可或缺的一部分,它们使用特殊的字符序列来定义一个模式,该模式可以用来...
1. JavaScript正则表达式在线测试工具:http://tools.jb51.net/regex/javascript 2. 正则表达式在线生成工具:http://tools.jb51.net/regex/create_reg 这些工具可以帮助开发者快速测试和生成正则表达式,从而提高...
多种编程语言,包括Perl、PHP、Python、JavaScript以及Java等均内置了对正则表达式的支持。本文将详细介绍Java中正则表达式的使用方法,并通过Jakarta-ORO库来演示具体的实现过程。 #### 二、正则表达式基础知识 #...
本文将详细解析标题、描述所提及的Java、Tomcat和JavaScript正则表达式,以及它们在实际开发中的应用。 首先,Java是一种多平台、面向对象的编程语言,由Sun Microsystems(现已被Oracle收购)开发。Java的特点在于...
在Web应用开发中,例如"WebApplication2"这样的项目,可以利用前端验证(如JavaScript)和后端验证(如服务器端语言如Java、Python等)双重校验密码强度,以提供更高的安全性。前端验证可以即时反馈给用户,而后端...
7. 正则表达式在线测试工具:文章中也提供了两个在线测试工具,一个是JavaScript正则表达式在线测试工具,另一个是正则表达式在线生成工具,这两个工具可以帮助开发者测试和生成正则表达式。 8. java正则表达式技巧...
随着时间的推移,正则表达式成为了多种编程语言和文本编辑器的标准功能,如Perl、PHP、Python、JavaScript和Java等。 Java正则表达式虽然与其他语言的正则表达式有相似之处,但它们并不完全相同,有自己的语法和...
java/Android 正则表达式详解 Java 正则表达式详解是一份详细的正则表达式使用指南,它涵盖了正则表达式的基础知识、语法、实践应用等方面的内容。本文首先简要地介绍了正则表达式的基础知识,然后以 Jakarta-ORO ...
在Java和JavaScript中,正则表达式被广泛应用于数据验证、搜索与替换、提取信息等多种场景。本教程将对Java和JavaScript中的正则表达式进行深入的探讨。 在Java中,正则表达式是通过`java.util.regex`包提供的API来...
### js正则表达式详解 #### 一、正则表达式基础知识 正则表达式是一种强大的文本处理工具,被广泛应用于各种编程语言中,用于文本的查找与替换、验证等场景。JavaScript同样支持正则表达式的使用,并且具有非常...
以上内容涵盖了JavaScript正则表达式的基础和进阶知识点,对于理解和使用JavaScript正则表达式进行文本处理和验证等任务非常有帮助。通过深入学习和实践,你可以掌握这一强大的工具,提升你的编程技能。
### Java中的正则表达式应用 #### 早期起源与历史背景 正则表达式的起源可以追溯到对人类神经系统的研究。1956年,数学家Stephen Kleene在其论文《神经网事件的表示法》中首次引入了正则表达式的概念。这种表达...
Java正则表达式与JavaScript的正则表达式并不完全相同,尽管它们在很多方面有相似之处。Java正则表达式提供了高效和简洁的方式来处理复杂的字符串操作,例如验证电子邮件地址。相比于传统的编程方法,使用正则表达式...
9. **实例应用**:正则表达式广泛应用于文本编辑器(如vim、emacs)、编程语言(如JavaScript、Python、Java)和搜索引擎(如grep、findstr)。例如,用于验证邮箱格式、手机号码、提取URL等。 通过《精通正则...