请问什么是程序设计语言中的正则表达式和BNF表示法?

作者&投稿:家俭 (若有异议请与网页底部的电邮联系)
什么是正则表达式~

正则表达式,又称规则表达式。是计算机科学的一个概念。
正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。
正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。


扩展资料
正则表达式的作用:
1、匹配
检查字符串是否符合正则表达式中的规则,有一次不匹配,则返回false。如:
String str="abc";
String reg="[a-zA-Z]\\d?";//次表达式表示字符串的第一位只能是字母,第二位只能是数字或没有boolean flag=str.matches(reg);//返回结果为true。
2、切割
所谓切割,即是按一定的规则将字符串分割成多个子字符串,如:
String str="zhangsan,lishi,wangwu"。
String reg=",";//表示以逗号作为切割符。
String[] arr=str.split(reg);//返回结果为{“zhangsan”,"lisi","wangwu}。
3、替换
即将字符串中符合规则的字符替换成指定字符,如:
String str="sfhjhfh136hjasdf73466247fsjha8437482jfjsfh746376"。
str.replaceAll("\\d{3,}","#");//表示将连续出现三个或三个以上的数字替换成“#”。
参考资料来源:百度百科-正则表达式

在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。

括号的意思:将 ( 和 ) 之间的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域(一个正则表达式中最多可以保存9个),它们可以用 \1 到\9 的符号来引用。

|的意思:将两个匹配条件进行逻辑“或”(Or)运算。例如正则表达式(him|her) 匹配"it belongs to him"和"it belongs to her",但是不能匹配"it belongs to them."。

*的意思:匹配0或多个正好在它之前的那个字符。例如正则表达式.*意味着能够匹配任意数量的任何字符。

所以你给的那个例子00(0|1)*可以用来匹配00或者001或者000或者0000或者0011,但是不能匹配011等等。

具体定义还是要多参考一下下面的文章:

http://net.pku.edu.cn/~yhf/tao_regexps_zh.html

正则表达式,Regular Expression(也称为“regex”或“regexp”),是一种用来描述文本模式的特殊语法。一个正则表达式由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符,如/、*、?等)组成。简单地说,一个正则表达式就是你需要匹配的字符串。例如,正则表达式“A*B”匹配字符串“ACCCB”但是不匹配“ACCCC”。

什么是巴科斯范式?

巴科斯范式(BNF: Backus-Naur Form 的缩写)是由 John Backus 和 Peter Naur 首先引入的用来描述计算机语言语法的符号集。
现在,几乎每一位新编程语言书籍的作者都使用巴科斯范式来定义编程语言的语法规则。

巴科斯范式的内容

在双引号中的字("word")代表着这些字符本身。而double_quote用来代表双引号。
在双引号外的字(有可能有下划线)代表着语法部分。
尖括号( < > )内包含的为必选项。
方括号( [ ] )内包含的为可选项。
大括号( { } )内包含的为可重复0至无数次的项。
竖线( | )表示在其左右两边任选一项,相当于"OR"的意思。
::= 是“被定义为”的意思。

巴科斯范式示例

这是用BNF来定义的Java语言中的For语句的实例:

FOR_STATEMENT ::=
"for" "(" ( variable_declaration |
( expression ";" ) | ";" )
[ expression ] ";"
[ expression ] ";"
")" statement

这是Oracle packages的BNF定义:

package_body ::= "package" package_name "is"
package_obj_body { package_obj_body }
[ "begin" seq_of_statements ]
"end" [ package_name ] ";"

package_obj_body ::= variable_declaration
| subtype_declaration
| cursor_declaration
| cursor_body
| exception_declaration
| record_declaration
| plsql_table_declaration
| procedure_body
| function_body

procedure_body ::= "procedure" procedure_name
[ "(" argument { "," argument } ")" ]
"return" return_type
"is"
[ "declare" declare_spec ";" { declare_spec ";" } ]
"begin"
seq_of_statements
[ "exception" exception_handler { exception_handler } ]
"end" [ procedure_name ] ";"

statement ::= comment
| assignment_statement
| exit_statement
| goto_statement
| if_statement
| loop_statement
| null_statement
| raise_statement
| return_statement
| sql_statement
| plsql_block

这是用BNF来定义的BNF本身的例子:

syntax ::= { rule }
rule ::= identifier "::=" expression
expression ::= term { "|" term }
term ::= factor { factor }
factor ::= identifier |
quoted_symbol |
"(" expression ")" |
"[" expression "]" |
"{" expression "}"
identifier ::= letter { letter | digit }
quoted_symbol ::= """ { any_character } """

扩展的巴科斯范式 Augmented BNF

RFC2234 定义了扩展的巴科斯范式(ABNF)。近年来在Internet的定义中ABNF被广泛使用。ABNF做了更多的改进,比如说,在ABNF中,尖括号不再需要。


什么是C语言程序设计?
什么是C语言?C语言的简介。C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体...

什么是编程语言?
客户应用程序流程与电子计算机互动,程序流程应用C,C++,Java等电子计算机计算机语言建立,编程语言是客户根据程序编写命令与电脑通讯的语言表达。计算机语言都包括一组预订义的词汇和一组用以建立程序流程命令的标准(英语的语法)。编程语言的归类:很多年来,编程语言早已从低级语言演化为程序设计语言。在电子...

什么是程序设计和编程?
程序设计(Programming)是给出解决特定问题程序的过程,是软件构造活动中的重要组成部分。程序设计往往以某种程序设计语言为工具,给出这种语言下的程序。程序设计过程应当包括分析、设计、编码、测试、排错等不同阶段。专业的程序设计人员常被称为程序员。某种意义上,程序设计的出现甚至早于电子计算机的出现。...

程序设计语言可分为哪几类,各有什么样的特点?
0S是计算机系统(由软硬件两个子系统构成)的核心和灵魂,它是软件中最庞大最复杂的系统软件。既然如此庞大复杂的0S都可以用c语言编写,从狭义而言,还有什么系统软件和应用软件不能用c语言编写呢?由此可以肯定的说,c语言是一门十分优秀而又重要的语言。c语言程序设计是过程性程序设计语言,它的发展贯穿了...

程序设计是什么?
计算机解决问题的过程是:分析问题、设计算法、编写程序、调试运行、检测结果。计算机解决问题的过程也是程序设计的过程。程序设计是运用计算机解决问题的一种方式,有些问题,如:数值、逻辑等问题适合于通过程序的方式解决。通过实例问题的分析、设计算法、把所要解决的问题转化成的程序输入到计算机、经调试后...

什么是电脑的语言程序设计?
今天即使在处理许多先进的问题上,如人类学、哲学、艺术及心理学等观念,非技术方面的专业人员亦引领着电脑科技的发展方向。理由很简单,无论有多少的硬件设备,电脑终究要被人类所使用,人类可能担任操作者或程序设计人员的角色,不论是多媒体展示会的观众,或是受惠于电脑辅助设计教学的学生,在人机界面上...

计算机程序设计是什么意思?
计算机程序设计是指通过编写、组织和调试一系列指令和算法来实现特定功能的过程。它是计算机科学的重要组成部分,旨在解决问题并自动化任务。程序设计需要考虑问题的分析与抽象、算法设计、编程语言的选择与使用、代码的实现和调试等方面。在程序设计中,首先需要对问题进行分析和理解,确定问题的输入、输出和所...

什么是计算机程序设计?
计算机程序设计是指通过编写一系列指令或代码,以实现特定功能或解决问题的过程。它是计算机科学的重要分支,涉及到算法设计、数据结构、编程语言等方面的知识。在计算机程序设计中,首先需要明确问题的需求和目标,然后进行算法设计,即确定解决问题的步骤和方法。接下来,选择合适的编程语言,并使用语言的语法...

编程是什么
你不希望吧?那么就好好的学习一种程序设计语言吧。 编程会过时吗 编程会过时吗?这个问题,让我先问你一个问题:计算机会消失吗?这两者答案是一样的。知道了计算机会不会消失,就知道了编程会不会过时。 编程工具会过时,而编程却不会过时 计算机系统由可以看见的硬倒:系统和看不见的软件系统组成。要使计算机能够...

什么是编程??
5、为了和这些只讲二进制语言的机器交流,我们需要一种与我们的自然语言(比如英语、法语、阿拉伯语或斯瓦希里语。)比较接近的语言。程序设计语言就是一种和人类语言相近的语言。但是它们跟加结构化而且必须完全学会才能够使用它们。6、程序设计语言可能是高级程序设计语言或是低级程序设计语言。高级语言与...

嘉兴市17011034967: java 中正则表达式是什么意思???(regular Expression). -
东侨迪索: 一套处理java字符串的API,用于在目标字符串查找符合特定规则的字串.相关的处理类Pattern,Matcher.一个例子: public static void main(String args[]){//检测字符串是否符合全是数字的规则.Pattern p=Pattern.compile("[0-9]+");String src=...

嘉兴市17011034967: 正则表达式是什么? -
东侨迪索: 正则表达式,又称正规表示法、常规表示法.正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串.在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本.许多程序设计语言都支持利用正则表达式进行字符串操作.例如,在Perl中就内建了一个功能强大的正则表达式引擎.正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的.

嘉兴市17011034967: 什么是正则表达式 -
东侨迪索: 计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容.许多程序设计语言都支持利用正则表达式进行字符串操作.例如,在Perl中就内建了一个功能强大的正则表达式引擎.正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的.正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen.

嘉兴市17011034967: 简单说下什么是正则表达式 -
东侨迪索: 简单地说就是一种格式化的匹配方式,与普通的查找方式相比,可以用一句话匹配出所有格式统一或类似的子串,而不用逐一列出每一种可能的情况,可以大幅降低程序的复杂度,提高程序的可靠性,减少处理遗漏.

嘉兴市17011034967: 易语言里,“正则”是什么意思? -
东侨迪索: 正则,是正则表达式,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容.许多程序设计语言都支持利用正则表达式进行字符串操作.

嘉兴市17011034967: 求大神通俗的给我讲一下编程中的正则表达式 -
东侨迪索: 正则表达式是对字符串操作的一种逻辑公式:比如我们常见的验证邮箱的格式,手机号码的格式(11位数字). 主要用途:1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);2. 可以通过正则表达式,从字符串中获取我们想要的特定部分. 优点:1. 灵活性、逻辑性和功能性非常的强;2. 可以迅速地用极简单的方式达到字符串的复杂控制. 实例:eg:1[0-9]{10} 表示手机号以1开头后10位1-9的是11位数字

嘉兴市17011034967: Java中什么是正则表达式 -
东侨迪索: 众所周知,在程序开发中,难免会遇到需要匹配、查找、替换、判断字符串的情况发生,而这些情况有时又比较复杂,如果用纯编码方式解决,往往会浪费程序员的时间及精力.因此,学习及使用正则表达式,便成了解决这一矛盾的主要手段. 大 家都知道,正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文字主体时待匹配的一个或多个字符串.正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配. 自从jdk1.4推出java.util.regex包,就为我们提供了很好的JAVA正则表达式应用平台.

嘉兴市17011034967: 什么是正则性? -
东侨迪索: 正则表达式是一种可以用于模式匹配和替换的工具,可以让用户通过使用一系列的特殊字符构建匹配模式,然后把匹配模式与待比较字符串或文件进行比较,根据比较对象中是否包含匹配模式,执行相应的程序;正则表达式起始于UNIX系统,目前广泛应用于各种脚本语言中,在PHP,Perl,JavaScript中都能找到他的身影.目前正则表达式最常用的地方是在WEB上判断用户输入的电子邮件地址是否正确.

嘉兴市17011034967: 正则表达式和DELPHI有什么相关?
东侨迪索: 正则表达式和DELPHI是两个概念, DELPHI是一种程序设计语言(相信你懂) 正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等. 简单的说,就是查找字符串中是否包含某种格式的子字符串,并进行替换等操作的一种技术 详细可以参考:http://zhidao.baidu.com/question/12878982.html 你只要用DELPHI设计一个程序,里面用正则表达式实现一些目的就可以了吧

嘉兴市17011034967: 正则表达式^[\w - ]*$/ 代表什么意思 -
东侨迪索: 首先看\w表示匹配包括下划线的任何单词字符.等价于'[A-Za-z0-9_]'.然后跟了个_,在看*号:匹配前面的子表达式零次或多次.例如,zo* 能匹配 "z" 以及 "zoo". * 等价于{0,}. 这个表达式的意思就是把这个[\w_](任何单词字符包括下划...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网