我试图做我的作业,但正则表达式对我来说是新的,我不知道为什么我的代码不起作用。这就是我必须做的事情:
编写一个程序,替换为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]");
答案 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