用正则表达式替换标记

时间:2016-04-29 16:18:36

标签: regex

enter image description here

我试图做我的作业,但正则表达式对我来说是新的,我不知道为什么我的代码不起作用。这就是我必须做的事情:

  

编写一个程序,替换为HTML文档,所有标记为semilogy(x,getval4(x,5),'-og'); hold on ; semilogy(x,getval4(x,10),'--Xb'); semilogy(x,getval4(x,20),'--r'); ,并带有相应的标记<a href=…>…</a>。读取输入,直到收到“end”命令。在控制台上打印结果。

我写道:

[URL href=…]…[/URL]

它会在线程&#34; main&#34;中抛出异常。 java.lang.IllegalStateException:

Pattern pattern = Pattern.compile("<a href=\"(.)+\">(.)+<\\/a>");
input = input.replaceAll(matcher.toString(), "href=" + matcher.group(1) + "]" + matcher.group(2) + "[/URL]");

3 个答案:

答案 0 :(得分:0)

你朝着正确的方向前进,但是你无法使用Pattern这样的对象。

首先,将代码更改为仅使用字符串直接使用replaceAll(),并在替换字符串中使用正常的反向引用$n

您转换的代码是:

input = input.replaceAll("<a href=(\".+\")>(.)+<\\/a>", "href=$1]$2[/URL]");

接下来,修复表达式:

input = input.replaceAll("<a href=(\".+\")>(.+)</a>", "[URL href=$1]$2[/URL]");

更改是将+ 置于捕获组内。即(.)+ - &gt; (.+)并且还要捕获双引号,因为如果我解释&#34; spec&#34;那么你必须把它们放回去。正确。

另请注意,您不需要逃避正斜杠。正斜杠只是所有正则表达式中的普通旧字符。虽然某些语言使用正斜杠来分隔正则表达式,但java不是其中之一。

答案 1 :(得分:0)

您的+量词需要在括号内:

<a href=\"(.+)\">(.+)<\\/a>

答案 2 :(得分:0)

.
.
setpgid(x, x);
setpgid(y, x);
setpgid(z, x);
.
.


getpgid(x) returns x
getpgid(y) returns x
getpgid(z) returns x
相关问题