使用属性和值捕获html标记?

时间:2018-05-06 10:00:49

标签: java regex string

我在java中输入了一个完整的html文件作为字符串(我也有文件)。文字如下所示

Sample input
    Some text........... <s:message code="code1" arguments="${arg1,arg2}" />..
    some text  ........
    some text  ....... <s:message code="code2" 
     />...........

基本上我需要根据代码类型替换所有文本。例如,如果代码是code1,则用test1

替换s:message标记
sample output
    Some text........... test1..
    some text  ........
    some text  ....... test2 ...........

我没有得到如何捕获完整的<s:message >然后用其他文本替换它?看起来我需要在这里使用正则表达式但是 没有得到如何开始?

更新: -

code1和test1只是示例,它们可以是任何值。 code1可以是xyz,可以用abc替换。这就是为什么我想要捕获所有消息标签(在遍历或一次性过程中逐个捕获),然后获取代码,执行一些逻辑并查看替换值。

方法2: - 还有另外一种方法,我有数据结构中的代码列表,每个代码检查是否有任何封闭的消息标记,捕获它然后处理它。

1 个答案:

答案 0 :(得分:0)

它似乎是XML,您最好使用解析器来查找节点并将其替换为您想要的文本。使用正则表达式执行此操作非常简单(特别是当您的条件上升时)。但这是针对这个特定问题的解决方案:

String regex = '<s:message\\b[^>]*?"code(\\d+)"[^>]*>';

并将匹配替换为test$1

string = string.replaceAll(regex, "test$1");

Live demo