关于语法和正则表达式相关内容

语法分析

##语法

成分 操作
终止符 用单引号‘’ 表示不可延展 连接 x::=y z 空格表示
非终止符 可以延展 选择 x::= y
后缀操作符(x::=y* 0个或多个;x::=y? 0个或1个;x::=y+ 1个或多个)
[] 包括[]里面的任何字符,比如:[a-c]表示a到c
[^] 包括没有列在[]中的任何字符,比如:[^a-c]表示’d’

优先级:括号>后缀操作符>连接>选择

##有不同种语法解析规则(比如:Markdown,HTML…),这些被称为标记语言。

正则语法&&正则表达式

##正则语法:层层替换后可以写成1个产生式(产生式:推到规则),只含有终止符和操作符不含有任何终止符。
##正则表达式(regex):去掉引号和空格
例一:
url::=‘http://’ hostname ( ‘:’ port)? ‘/’
hostname::=(word ‘.’ hostname) | word ‘.’ word 递归写法
或者
hostname::=(word ‘.’)+ word
port::=[0-9]+
word::=[a-z]+
层层替换简化为:正则语法 url::=‘http://’ ([a-z]+ ‘.’)+ [a-z]+ (’:’ [0-9]+)? ‘/’
regex:http://([a-z]+\.)+[a-z]+(:[0-9]+)?/
例二
url::=protocol ‘:’ ’//’ hostname (’:’ port)? ‘/’ (word ‘/’)*
protocol::= ‘ftp’ | ‘http’ | ‘https’
hostname::= (word ‘.’)+ word
port::=[0-9]+
word::=[a-z0-9]+
层层替换可化为正则语法产生式
例三关于语法和正则表达式相关内容_第1张图片例四
关于语法和正则表达式相关内容_第2张图片

BNF

BNF格式的文本(产生式的语法定义):A::=B B::=C,语法规则有正则表达式(java语法),HTML语法,markdown语法…

正则表达式写法

##特殊字符需要转义:| \ ^ $ * + ? {} . [] ()
注意
(1){}中必须是非负整数;[]和()单独用一半无特殊意义,用完整才表示字符集合和组。
(2)<>这样使用是没有特殊意义,需要搭配别的字符(< >)才需要转义。
##字符集合表示
一类:[abc] [^abc] [a-b] [a-zA-Z] [^a-b]
注意:连字符-只有出现在两字符之间才表示范围,否则表示连字符本身
二类:[a-b[d-e]]并 [a-z&&[bc]]交
三类:表数量 x? 0/1 ; x* 0/多 ; x+ 1/多 ; x{n} n个 ;x{n, } n→+∞ ; x{n,m] n~m个
四类:缩写字符
① . :除了换行符,回车符外的任何单个字符
②\d:1个0到9的数字[0-9]
③\s:1个空白字符 空格,制表符,换行符(\n),回车符(\r)
④\w:[a-zA-Z_0-9] 包括下划线

你可能感兴趣的:(正则表达式)