Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >正则表达式的功能是什么?

正则表达式的功能是什么?
EN

Stack Overflow用户
提问于 2010-09-23 13:47:46
回答 2查看 2.1K关注 0票数 9

顾名思义,我们可能认为正则表达式只能匹配正则语言。但是我们在实践中使用的正则表达式包含了一些东西,我不确定它们在理论上是不可能实现的。例如,您将如何模拟反向引用?因此,问题出现了:我们在实践中使用的正则表达式的理论力量是什么?你能想出一种匹配{(a^n)(b^n)|n>=0}的方法吗?那{(a^n)(b^n)(c^n)|n>=0}呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-28 20:24:22

你的问题的答案是,允许反向引用的“正则表达式”语言既不是正则的,也不是上下文无关的。(换句话说,正如您所指出的,您不能使用常规语言或CFL来模拟反向引用。)事实上,维基百科说,我们在实践中使用的许多“正则表达式”语言都是

正如许多现代工具所支持的那样,具有无限数量的反向引用的

模式匹配是NP完全的(参见[11]定理6.2)。

正如其他人所建议的那样,计算机语言和库中通常支持的正则表达式语言与形式语言理论中的正则表达式是不同的。与Perl“正则表达式”相关的Larry Wall wrote

‘正则表达式’...与真正的正则表达式只有很小的关系。尽管如此,随着我们的模式匹配引擎的能力,这个术语已经增长了,所以我不打算在这里尝试与语言必要性作斗争。但是,我通常将它们称为“正则表达式”。

你问我,

你能想出一个匹配{(a^n)(b^n)|n>=0}的方法吗?{(a^n)(b^n)(c^n)|n>=0}怎么样?

在这里,我不确定您是否正在尝试测试理论上的正则表达式语言是否可以与“平方语言”相匹配,或者您是否正在寻找一种(实用的)正则表达式语言的实现。java正则表达式的Here's the proof why the former is not possible;here's a long explanation and implementation of the latter

票数 6
EN

Stack Overflow用户

发布于 2010-09-27 17:06:32

您所暗示的正则表达式的基本困难在于,正则表达式对它们没有“记忆”。在最纯粹的形式中,没有任何真正的正则表达式能够识别这两种语言中的任何一种。根据定义,任何可以解析这类语言的正则表达式都不是正则表达式。我认为你所说的“我们使用的正则表达式就是实践”是扩展的正则表达式,从技术上讲,它不是正则表达式。

你的问题的问题是,你要求将一个特别设计的理论场景应用于实际情况,这几乎总是以灾难告终。

所以我的回答是一种非回答,我的意思是你必须重新表述这个问题,询问关于扩展正则表达式的问题,才能得到答案。

有几个资源可能会对这个问题有所帮助:

Helpful wikipedia article

Similar StackOverflow question

Good book with a chapter on this topic

我还将我的回答作为社区维基,供任何其他想要为这一思路做出贡献的人使用。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3779016

复制
相关文章
《Java 2 图形设计卷Ⅱ- SWING》第2章 Swing的基本知识
本章介绍开发Swing小应用程序和应用程序时要用到的Swing的基本知识。  虽然Swing是AWT的扩展,但是两者的基本概念还是有许多不同之处。首先,Swing小应用程序和应用程序的实现方式与AWT小应用程序和应用程序的实现方式有所不同。而且,如果开发人员想要开发同时使用AWT组件和Swing组件的小应用程序或应用程序,则还必须注意混合使用轻量组件和重量组件所带来的许多问题。  Swing是线程不安全的,这就是说,在大多数情况下,只能从事件派发线程中访问Swing组件。本章将介绍采用这种方法的原因及使用这种方法所带来的结果,另外,本章还介绍了Swing提供的一些机制,这些机制使其他线程能从事件派发线程中执行代码。
用户7886150
2020/12/10
2.5K0
偏移量、客户区大小、视口大小、滚动大小、确定元素大小
1、偏移量 先讲几个偏移量属性: offsetHeight:元素在垂直方向上占用的空间大小;相当于border-top+padding-top+height+padding-bottom+border-bottom offsetWidth:元素在水平方向上占有的空间大小;相当于botder-left+padding-left+width+padding-right+border+right offsetLeft:元素的左外边框至包含元素的左内边框之间的像素距离。 offsetTop:元素的上外边框至包含元素的上内边框之间的像素距离。
Ewall
2018/09/04
1.5K0
深入Java Swing用户界面组件布局管理器:网格布局+面板+边界布局
在讨论每个Swing组件(例如文本域和单选按钮)之前,首先介绍一下如何把这些组件安排在一个框架内。与Visual Basic不同,JDK没有表单设计器,需要通过编写代码来定制(布局)用户界面组件所在的位置。
愿天堂没有BUG
2022/10/28
3.7K0
深入Java Swing用户界面组件布局管理器:网格布局+面板+边界布局
在 Vim 里为 Markdown 文档展示导航窗格
假设我们正在 Vim 里编辑一个很长的 Markdown 文档,这时想跳转到另一个章节去查看或编辑内容,可以怎么做?
mzlogin
2020/04/16
1.3K0
在 Vim 里为 Markdown 文档展示导航窗格
原生JS滚动鼠标改变元素大小
今天要分享的是运用原生JS滚动鼠标改变元素大小,效果如下: 以下是代码实现,欢迎大家复制粘贴 。 <!DOCTYPE html> <html> <head> <meta http-equiv
越陌度阡
2020/11/26
9.3K0
原生JS滚动鼠标改变元素大小
java swing一篇轻松学习(高考后可以自学)
是一种中间层容器,它能容纳组件并将组件组合在一起,但它本身必须添加到其他容器中使用。
红目香薰
2022/11/30
9.7K0
java swing一篇轻松学习(高考后可以自学)
Windows Terminal 快速快捷键指南
注:本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
宋天伦
2023/10/18
8320
Java---文件的切割与合并,已经实现图形界面(工具)
上次只写了特定目录下的文件切割与合并,有点遗憾, 这次,我写了一个图形界面来实现对文件的切割与合并。
谙忆
2021/01/21
7730
Java---文件的切割与合并,已经实现图形界面(工具)
JavaScript中window.open()和Window Location href的区别「建议收藏」
specs 可选。一个逗号分隔的项目列表。支持以下值: channelmode=yes|no|1|0 是否要在影院模式显示 window。默认是没有的。仅限IE浏览器 directories=yes|no|1|0 是否添加目录按钮。默认是肯定的。仅限IE浏览器 fullscreen=yes|no|1|0 浏览器是否显示全屏模式。默认是没有的。在全屏模式下的 window,还必须在影院模式。仅限IE浏览器 height=pixels 窗口的高度。最小.值为100 left=pixels 该窗口的左侧位置 location=yes|no|1|0 是否显示地址字段.默认值是yes menubar=yes|no|1|0 是否显示菜单栏.默认值是yes resizable=yes|no|1|0 是否可调整窗口大小.默认值是yes scrollbars=yes|no|1|0 是否显示滚动条.默认值是yes status=yes|no|1|0 是否要添加一个状态栏.默认值是yes titlebar=yes|no|1|0 是否显示标题栏.被忽略,除非调用HTML应用程序或一个值得信赖的对话框.默认值是yes toolbar=yes|no|1|0 是否显示浏览器工具栏.默认值是yes top=pixels 窗口顶部的位置.仅限IE浏览器 width=pixels 窗口的宽度.最小.值为100 replace Optional.Specifies规定了装载到窗口的 URL 是在窗口的浏览历史中创建一个新条目,还是替换浏览历史中的当前条目。支持下面的值:
全栈程序员站长
2022/09/14
5.6K0
VB.NET Excel Vsto 任务窗格_数据可视化处理
第一步,创建一个VSTO项目(excel,word,ppt)等操作一样 Public Class ThisAddIn #Region "任务窗格对象" ''' <summary>
办公魔盒
2021/06/25
1.8K1
VB.NET Excel Vsto 任务窗格_数据可视化处理
【Java AWT 图形界面编程】Container 容器 ③ ( ScrollPane 可滚动容器示例 )
ScrollPane 可滚动容器 无法在 屏幕中独立存在 , 必须 依赖于 Frame 窗口而存在 ;
韩曙亮
2023/03/30
4510
【Java AWT 图形界面编程】Container 容器 ③ ( ScrollPane 可滚动容器示例 )
如何在Ubuntu 16.04上安装和使用Byobu进行终端管理
Byobu是一个易于使用的tmux(或screen)终端多路复用器包装器。这意味着它可以让您轻松打开多个窗口并在单个终端连接中运行多个命令。
陈树丶
2018/09/29
10.4K0
终端复用利器 Tmux
一般情况下 tmux 中所有的快捷键都需要和前缀快捷键 ⌃b 来组合使用(注:⌃ 为 Mac 的 control 键.
呼延十
2019/07/01
1.1K0
终端复用利器 Tmux
不同组织的窗宽窗位
垂体及蝶鞍区病:变窗宽宜设在200 Hu~250 Hu,窗位45 Hu~50 Hu,
全栈程序员站长
2022/06/24
7670
DICOM影像中的窗宽窗位
医学图像领域的关键技术窗技术,是CT检查中用以观察不同密度的正常组织或病变的一种显示技术,包括窗宽(window width)和窗位(window level)。由于各种组织结构或病变具有不同的CT值,因此想要显示某一组织结构细节时,应该选择适合观察该组织或病变的窗宽和窗位,以获得最佳显示。
全栈程序员站长
2022/09/07
1.5K0
VBA专题10-4:使用VBA操控Excel界面之设置工作簿视图和窗口
如果活动工作表不是标准工作表,那么上述语句执行时会导致运行时错误,因为图表工作表、宏工作表或对话框工作表没有这些视图选项。
fanjy
2020/08/04
3.9K0
tmux命令快捷键
这么做可以切换到想要的窗口,输入 Tmux 前缀和一个冒号呼出命令提示行,然后输入:
机械视角
2019/10/23
2K0
【Java AWT 图形界面编程】AWT 简介 ( AWT 核心类继承体系 )
Java 中 使用 AWT 和 Swing 进行 图形界面开发 , AWT 是 抽象窗口工具集 , Abstract Window Toolkit , AWT 功能比较简单 , Swing 提供了更加丰富的界面组件库 ;
韩曙亮
2023/03/30
6810
java Swing用户界面组件文本输入:文本域+密码域+格式化的输入域
现在终于可以开始介绍Swing用户界面组件了。首先,介绍具有用户输入和编辑文本功能的组件。文本域(JTextField)组件和文本区(JTextArea)组件用于获取文本输入。文本域只能接收单行文本输入而文本区可以接收多行文本输入。
愿天堂没有BUG
2022/10/28
4.2K0
java Swing用户界面组件文本输入:文本域+密码域+格式化的输入域
点击加载更多

相似问题

mysqldump和分离插入的

12

基于字符串匹配和分号的字段分离

23

用PowerShell读取大文件并删除回车

31

在大文件中插入字符串

30

基于分号的字符串分离方法

23
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文