用于标识属性值的正则表达式模式

时间:2016-03-21 14:53:24

标签: java regex

我有一个源代码文件,我试图在java中使用自动Regex处理器类读取。

虽然如果在行中多次出现,我无法形成正确的正则表达式模式来获取值。

输入文字为:

<input name="id" type="radio" bgcolor="<bean:write name='color'/>" value="<bean:write name='nameProp' property='nameVal'/>" <logic:equal name="checkedStatus" value="0">checked</logic:equal>>

我希望matcher.find输出以下术语:

<bean:write name='color'/>
<bean:write name='nameProp' property='nameVal'/>

请帮助形成此场景的正则表达式模式。

1 个答案:

答案 0 :(得分:0)

使用此正则表达式查找这些术语:

<bean:write[^\/]*\/>

它将搜索单词<bean:write,然后搜索所有内容,直到/>

像这样使用:

List<String> matches = new ArrayList<>();
Matcher m = Pattern.compile("<bean:write[^\\/]*\\/>")
                   .matcher(inputText);
while (m.find()) {
    matches.add(m.group());
}

Regex101 Tested

我提醒您使用正则表达式解析HTML。如果你需要比这更复杂的东西,你应该考虑使用XML解析器。见this famous answer.