Java中正则表达式与之前使用的Python是有区别的,区别在于Java对于反斜线(\)处理的不同。 在Python中”\d”表示 匹配一位数字(0-9),而Java中匹配一位数字(0-9),需要的正则表达式为”\\d”。 不过换行符和制表符只需要单反斜线“\n\t”。
正则表达式定义了字符串的模式。可以用来搜索、编辑或处理文本。不仅限于某一种语言,但是在每种语言中有细微的差别。
java正则表达式是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。
在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。
很可能你使用过Windows/Dos下用于文件查找的通配符(wildcard),也就是*和?。如果你想查找某个目录下的所有的Word文档的话,你会搜索*.doc。在这里,*会被解释成任意的字符串。
和通配符类似,正则表达式也是用来进行文本匹配的工具,只不过比起通配符,它能更精确地描述你的需求——当然,代价就是更复杂——比如你可以编写一个正则表达式,用来查找所有以0开头,后面跟着2-3个数字,然后是一个连字号“-”,最后是7或8位数字的字符串(像010-12345678或0376-7654321)。
正则表达式的基本操作:
正则表达式定义:符合一定规则的表达式。
作用:用于专门操作字符串。
特点:用于一些特定的符号来表示一些代码操作。这样就简化书写。所以学习正则表达式,就是在学习一些特殊符号的使用。
好处:可以简化对字符串的复杂操作。
弊端:符号定义越多,正则越长,阅读性越差。
JAVA中正则表达式处理字符串的四个常用方法:匹配、分割、替换、截取。其跟字符串的常用函数相似,但是使用正则表达式会更简单、更加简洁。下面是具体的例子:
1 public class TestRegex {
2
3 public static void main(String[] args) {
4 String str = ""
5 String regex = ""
6
7 // 匹配
8 regex = "[1-9][a-z]"
9 getMatches(str, regex)
10
11 // 分割
12 str = "1a:abc123:"
13 regex = ":"
14 getSpilt(str, regex)
15
16 // 替换
17 str = "1223334444aaabbc"
18 String oldChar = "(.)\\1+"
19 regex = "$1"
20 getReplace(str, oldChar, regex)
21
22 // 截取
23 str = "urlabc123"
24 regex = "(.*)"
25 getSubstring(str, regex)
26
27 }
28
29 public static void getMatches(String str, String regex) {
30 System.out.println(str.matches(regex))
31 }
32
33 public static void getSpilt(String str, String regex) {
34 String[] array = str.split(regex)
35 for (String t : array) {
36 System.out.println(t)
37 }
38 }
39
40 public static void getReplace(String str, String oldChar, String regex)
{
41 System.out.println(str.replaceAll(oldChar, regex))
42 }
43
44 public static void getSubstring(String str, String regex) {
45 Pattern p = Pattern.compile(regex)
46 Matcher m = p.matcher(str)
47 if (m.find()) {
48 System.out.println(m.group(1))
49 }
50 }
51 }