前言
正则表达式定义了字符串的模式。
正则表达式可以用来搜索、编辑或处理文本。
正则表达式对java的编译、语法解析有重要作用
提示:以下是本篇文章正文内容,下面案例可供参考
一、表达式的匹配验证
我们可以用语法定义一个字符串,用于后续解析
nonterminal ::= expression of terminals,nonterminals, and operations
示例:
url ::= 'http://' hostname (':' port)? '/'
hostname ::= word '.' hostname | word '.' word
port ::= [0-9]+
word ::= [a-z]+
二、original语法和操作符
//连接 x ::= y z //x由y和z连接而成 //重复 x ::= y* //x为y重复0次或多次 //选择 x ::= y|z //x为y或z //正闭包 x ::= y+ //存在 x ::= y? //x为y出现0次或1次
//还有如 x ::= [a-c] //等价于x ::= 'a'|'b'|'c'
三、语法解析树
在进行字符串的语法匹配时会产生一个语法解析树,用于解析字符串中的部分与语法部分的对应关系,如果对我们上面给出的例子,输入一个串“http://didit.csail.mit.edu:4949/”
就会产生如下分析树:
四、正则表达式及语法
正则语法:简化之后可以表达为 一个产生式而不包含任何非终止节点。
正则语法有一个特殊的属性:通过将每个非终结符(根除外)替换为其右侧,可以将其缩减为根的单个产生式,并且只在右侧使用终结符和运算符。
在 Java 中,\\ 表示:我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。
java.util.regex 包主要包括以下三个类:
- Pattern 类:
pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数。
- Matcher 类:
Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。
- PatternSyntaxException:
PatternSyntaxException 是一个非强制异常类,它表示一个正则表达式模式中的语法错误。
用正则表达式,我们的上述语法表达式就可抽象为:
http://([a-z]+\.)+[a-z]+(:[0-9]+)?/
整个java语法可以抽象为:
总结
本文仅仅简单介绍了java中语法和正则表达式的概念与使用,实际上java提供了大量有关正则表达式的方法和转义符
d提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。