图片缩略图

交互式正则表达式工具

版本3.0.0(5.08 KB)由 Stephen Cobeldick
在显示所有REGEXP输出的交互式图中开发和改进正则表达式。
4.8
8级

13下载

更新2021年5月07

查看版本历史记录

查看许可证

这是一个帮助开发正则表达式的简单交互式工具。它允许您以交互方式编写正则表达式,并在键入时查看REGEXP的输出更新。

该工具只包含一个M文件,它创建一个包含两个编辑框(用于解析字符串和正则表达式字符串)的图形,并在图形中显示所有REGEXP的输出(请注意,可以手动调整列宽)。

这个函数可以以两种方式使用(以及这两种方式的任何组合):
1.交互方式是直接在图形的编辑框中输入,或者
2通过使用与REGEXP本身完全相同的输入和选项调用函数。

只需将图打开,即可使用这两种操作模式的任意组合:这允许通过更改parse和正则表达式字符串来细化正则表达式,还可以更新作为函数输入提供的任何REGEXP选项。可以在两个编辑框中复制和粘贴文本。如果需要,可以通过使用适当的输出说明符调用函数来返回REGEXP的输出值(默认情况下没有函数输出)。

###保持简单

这是FEX上最简单的交互式正则表达式工具:没有高亮显示,没有链接,没有颜色,没有按钮,没有java代码,没有文件解析,没有应用程序需要安装,没有第三方依赖…你只需要这个m文件。IREGEXP帮助快速开发正则表达式,特别是允许只使用键盘进行编辑(使用tab键在编辑框之间切换),以解析短文本。

# # # # # #重要

MATLAB的UICONTROL文本编辑框不会随着您的键入而更新,所以我使用了一些按键技术来尝试实现这一点。这种破解很容易混淆,因此为了确保正确的文本被解析,您需要正确地输入文本:根据MATLAB的UICONTROL文档,从编辑框中单击是保证这一点的唯一方法!

还要注意,在多行模式下,编辑框本身会从文本中删除尾随的换行符(不是我的代码!)

# # # # # #的例子

省略号表示在不关闭地物窗口的情况下继续。

%使用默认的解析和正则表达式字符串调用:
>>iregexp()
%…以交互方式添加分析字符串“0_AAA111-BB22.CCCC3”。
交互添加正则表达式'([A-Z]+)'。
%…调用以设置新的分析字符串:
> > iregexp(“0 _aaa111-bb22.cccc3”,[])
交互地将正则表达式更改为'([a-z]+)\d+'。
%……调用以允许不区分大小写的匹配:
> > iregexp([][],“ignorecase”)
交互式地将正则表达式更改为'(?[A-Z]+)(?\d+)'。
%……调用将选定的输出赋值给某些变量:
> > [A, B, C, D] = iregexp([][],“ignorecase”,“匹配”,“开始”,“令牌”,“分裂”)
A={'aaa111','BB22','cccc3'}
B = [3,10,15]
C={'aaa','111'},{'BB','22'},{'cccc','3'}
D = {' 0 _','-','.',''}

引用为

斯蒂芬·科贝迪克(2021年)。交互式正则表达式工具(//www.tatmou.com/matlabcentral/fileexchange/48930-interactive-regular-expression-tool), MATLAB中央文件交换。检索.

意见及评分(12)

亚历山德罗Togni

Xingwang勇

干得好,谢谢!

杰森

很棒的工具,非常有用。

Stephen Cobeldick

@刘卓河:接得好!我已经添加了您建议的修复程序,将上载新版本。
似乎R2019a/b稍微更改了范围规则,因为该语法使用时没有错误。

Zhuohe刘

在r2019b中,在第149行之后添加一行'out = [];的运行。
错误:文件:iregexp.m行:163列:13
标识符'out'不是函数或共享变量。要与嵌套函数共享'out',请在内部初始化它
当前范围。有关详细信息,请参见在父函数和嵌套函数之间共享变量。

madhan拉维

雷蒙德Wollenberg

设置正则表达式的输入非常有用!!!

KAE

如果您不经常使用regexp来记住这些技巧,这将非常有用。

Stephen Cobeldick

@KE和Kouichi:谢谢你们的反馈。不幸的是,我有一个较老的(非hg2)版本的MATLAB,所以我不能测试我的代码与后2014b版本。

基于您的评论,我将很快做出一些改变,这应该使此提交与MATLAB 2014b和后续版本兼容。

@Kouichi:我对朋友和家人做了一个小调查,结果没有定论:我问的一些人想要底部的信息,一些人想要顶部的信息,每个人对他们为什么有这种偏好有不同的解释。。。

K E

需要下面的修复

中村Kouichi C.Nakamura

显然,您可能有不同的意见,但认为将“ParseString”和“MatchExpression”放在顶部可能更直观一些。这只是一个投票。:)

中村Kouichi C.Nakamura

嗨,斯蒂芬,

这是一个非常有用的工具。您可以实时查看什么类型的表达式与什么匹配。这可以节省我很多时间,也有助于我理解正则表达式。谢谢。

我在R2016b pre上对其进行了测试,但直到我在下面做了一些修改之后,代码才运行。hnd是uipanel对象,没有“TitleHandle”属性。此外,uipanel的“Title”属性不允许将其转换为复选框。

如果您可以考虑包含以下条件块,或者以其他方式使其与最新版本兼容,那就太好了。

如果verLessThan (matlab, 8.4.0)
%% R2014a或更早
其他的
%% R2014b或更高版本
结束

变化

第89行
[fig,out,seq,par,chk]=rgxNewFig(inp);%chk需要删除
第101行
%设置(chk,'Value',true);%注释掉

第135行
函数[fig,out,seq,par,chk] = rgxNewFig(inp) %chk需要删除

第214行
旧=警告(“关闭”,“MATLAB:Uipanel:HiddenImplementation”);
嗯=(合格证书,“TitleHandle”);感谢Yair Altman的这个主意。
集(嗯,“风格”,“复选框”、“位置”,得到了(嗯,“位置”)+(0,0,18岁,0),…
“价值”,0,“回调”,@ (H, E)组(par(1),“马克斯”,1 + (get (H,“价值”))));
警告(旧)
%注释掉了

第221行
set(par(1),'Max',1) %单行解析字符串。%包括