用Java写的一个正则表达式测试工具,对下载的一个工具做了改进。
写这个的初衷是因为项目中要为struts的html标签加上styleId属性,其属性值一般与property属性值相同。由于页面很多手工修改很可能会出差错工作量也很大,虽然这项工作不是由我来做,但是我建议可以用正则表达式替换来做,可以简单很多。写正则表达式的任何就落在我的头上了,这个正则表达式不会很简单,我需要能够快速的测试正则表达式。而且eclipse或ultraedit等工具一般只接受单行正则表达式,不接受带注释的正则表达式,但是在开发过程中使用带注释的正则表达式是很重要的,将所有的正则表达式写在一行,一旦正则表达式太长很容易把自己搞糊涂,因此我需要将带注释的正则表达式转化成单行的不带注释的正则表达式。
要匹配一个简单的属性,属性包括属性名或属性值,属性值可以包含在单引号或双引号中:
\w+\s*=\s*"[^"]*"|'[^']*'
不幸的是它不能正确匹配:property="<%="prop"+i%>",因此要匹配一个属性:
\w+\s*=\s*(?:"<%=(?:[^%]*|[^>]*)%>"|"[^"]*"|'[^']*')
(?:)表示不捕获该组。
匹配标签的开始部分,(?!\s+styleId),向前负匹配,表示如果已经存在styleId属性就不用替换了
<html:(text|select|hidden)(?!\s+styleId)
匹配property属性之前或之后的部分:
(?:\s+\w+\s*=\s*(?:"<%=(?:[^%]*|[^>]*)%>"|"[^"]*"|'[^']*')(?!\s+styleId))*
匹配property属性:
property\s*=\s*("<%=(?:[^%]*|[^>]*)%>"|"[^"]*"|'[^']*')(?!\s+styleId)
最终结果:
( # 捕捉property属性之前的所有部分,用于替换
<html:(text|select|hidden)(?!\s+styleId) #起始标签,不包含styleId
(?:\s+\w+\s*=\s*(?:"<%=(?:[^%]*|[^>]*)%>"|"[^"]*"|'[^']*')(?!\s+styleId))* #property属性之前的属性
\s+ #属性之间的空格
property\s*=\s*("<%=(?:[^%]*|[^>]*)%>"|"[^"]*"|'[^']*')(?!\s+styleId) #property属性
)
( # 捕捉property属性之后的所有部分,用于替换
(?:\s+\w+\s*=\s*(?:"<%=(?:[^%]*|[^>]*)%>"|"[^"]*"|'[^']*')(?!\s+styleId))* #property属性之后的属性
\s* #开始标签结尾部分可选的空格
(?:/>|>)
)
将它转换成不带注释的正则表达式:
*"|'[^']*')(?!\s+styleId))*\s+property\s*=\s*("<%=(?:[^%]*|[^>]*)%>"|"[^"]*"|'[^']*')(?!\s+styleId))((?:\s+\w+\s*=\s*(?:"<%=(?:[^%]*|[^>]*)%>"|"[^"]*"|'[^']*')(?!\s+styleId))*\s*(?:/>|>))
替换表达式为: $1 styleId=$3$4
测试输入:
<html:text property="property">text</html:text>
<html:text name="something" property="property" other=""/>
<html:hidden name="something" property ="<%="citation[" + index +"].displayFlag"%>" other=""/>
<html:hidden property ="<%="citation[" + index +"].displayFlag"%>"/>
使用编辑器的正则表达式替换功能(使用ultraedit需将正则表达式的引擎设置为perl),替换结果将为:
<html:text property="property" styleId="property">text</html:text>
<html:text name="something" property="property" styleId="property" other=""/>
<html:hidden name="something" property ="<%="citation[" + index +"].displayFlag"%>" styleId="<%="citation[" + index +"].displayFlag"%>" other=""/>
<html:hidden property ="<%="citation[" + index +"].displayFlag"%>" styleId="<%="citation[" + index +"].displayFlag"%>"/>
- 描述: 截图
- 大小: 19.1 KB
分享到:
相关推荐
本项目提供了一个C#编写的正则表达式测试工具,包含完整的源代码,可以帮助开发者调试和测试他们的正则表达式,支持查找和替换功能,并能直观地显示匹配结果。 1. **C#中的正则表达式基础** - `System.Text....
DotNet正则表达式测试工具,基于.net1.1开发,vista以上操作系统绿色免安装。 用于编写正则表达式时进行测试,支持正则选项(是否忽略大小写、是否多行模式)、支持正则替换
"正则表达式测试工具" 是一个专为开发者和文本工作者设计的实用程序,它允许用户测试和验证他们的正则表达式,无需在实际项目中反复试验。这种工具通常具有以下特点: 1. **实时反馈**:用户输入正则表达式后,工具...
而一个好用的正则表达式测试工具能帮助开发者快速调试和优化正则表达式,提高工作效率。 标题“好用的正则表达式测试工具”指的是这样一种软件或在线平台,它提供了友好的界面和功能,让用户能够方便地测试自己的...
这个"qt正则表达式测试工具"显然是一个帮助开发者验证和调试正则表达式的实用程序。 正则表达式是一种特殊的文本字符串,用于描述复杂或重复的文本模式。它们在搜索、替换、数据提取等任务中非常有用。在Qt中,...
- 工具支持:利用在线正则表达式测试网站,如Regex101,进行实时调试和学习。 综上所述,"正则表达式转换工具"是处理文本数据的强大辅助,它简化了正则表达式的构造过程,使得非专业人士也能方便地利用正则表达式...
4. 正则表达式测试程序 - 这个程序可能包含一个输入框让用户输入正则表达式,另一个输入框输入待测试的文本,然后提供按钮来执行匹配、替换等操作。 - 程序会显示匹配结果,包括匹配的子串、开始位置和结束位置等...
正则表达式测试工具是程序员和数据分析师的得力助手,它允许用户在无需编写完整程序的情况下,快速测试和调试正则表达式。 在标题提到的"正则表达式测试工具"中,我们可以推测这是一款专门用于测试和验证正则表达式...
8. **调试功能**:高级的正则表达式测试工具通常会提供逐步调试功能,用户可以查看每一步匹配的过程,这对于解决复杂的匹配问题非常有帮助。 使用RegexTest这样的工具,用户可以快速验证自己的正则表达式是否按预期...
综上所述,这个"C++写的正则表达式验证工具"利用了Boost库中的`boost::regex`,为C++程序员提供了一个便捷的正则表达式验证平台,有助于他们调试和测试正则表达式,提升开发效率。通过查看源代码,学习者可以深入...
deelx正则表达式测试工具是一款专为开发者设计的正则表达式调试软件,它提供了一个友好的界面,使得用户能够方便地测试、验证和调试正则表达式。这款工具的核心功能包括: 1. **实时测试**:输入正则表达式后,可以...
总之,Java正则表达式测试工具是一个方便的开发辅助工具,它提供了对正则表达式的快速验证和调试功能。无论你是初学者还是经验丰富的开发者,都能从中受益,提高工作效率,避免因正则表达式错误导致的问题。通过结合...
"正则表达式测试工具(VB6)" 是一个专为此目的而设计的应用程序,它提供了一个用户友好的界面,帮助开发者测试和调试他们的正则表达式。 这个工具包含了查找和替换两个核心功能。查找功能允许用户输入正则表达式,...
testregex.exe 是一个正则表达式测试工具,可能由.NET Framework开发,提供了一个用户友好的界面,让用户能够输入待测试的正则表达式以及目标文本,然后直观地查看匹配结果。用户可以通过这个工具快速验证正则表达式...
支持win10,没有替换功能,可以替代vba进行的测试工具
正则表达式测试工具,美观功能强大! 1、可作为文本编辑器,支持简洁模式,字号变大变小,字体设置,颜色设置,对齐方式,行间距设置 2、多页面可保存 3、支持正则表达式匹配与替换,子匹配单独显示,单独选择 4、...