小编Duv*_*eit的帖子

正则表达式优化 - 在java中转义&符号

我需要替换不属于HTML实体的字符串中的所有&.因此字符串"This&entites >&<"将返回"This &entites > & <"

而且我想出了这个正则表达式模式:" &[a-zA-Z0-9] {2,7}; "这很好用.但是我对正则表达式并不是很熟练,当我测试超过100k迭代的速度时,它比先前使用的方法使用了两倍的时间,没有使用正则表达式.(但也不是100%工作).

Testcode:

long time = System.currentTimeMillis();
String reg = "&(?!&#?[a-zA-Z0-9]{2,7};)";
String s="a regex test 1 & 2  1&2 and &_gt; - &_lt;"
for (int i = 0; i < 100000; i++) {test=s.replaceAll(reg, "&amp;");}
System.out.println("Finished in:" + (System.currentTimeMillis() - time) + " milliseconds");
Run Code Online (Sandbox Code Playgroud)

那么问题是,是否有一些明显的方法可以优化这个正则表达式,使其更有效?

java regex optimization

5
推荐指数
1
解决办法
1万
查看次数

在同一响应中设置多个cookie

我需要在一个响应中创建几个持久性 cookie.

这样做

response.addCookie(new Cookie("1","1"));
response.addCookie(new Cookie("2","2"));
Run Code Online (Sandbox Code Playgroud)

会创建一个带有2个"Set-Cookie"标题的响应.但他们不会坚持不懈.我需要"过期"日期.

expires=Wed, 07-Nov-2012 14:52:08 GMT
Run Code Online (Sandbox Code Playgroud)

看看javax.servlet.http.Cookie如何不支持"expires",我以前用过

String cookieString="cookieName=content;Path=/;expires=Wed, 07-Nov-2012 14:52:08 GMT;"
response.setHeader("Set-Cookie", cookieString);
Run Code Online (Sandbox Code Playgroud)

哪个像魅力一样,但第二次使用response.setHeader("Set-Cookie",newCookie)会覆盖第一个.

那么,问题是,是否有任何方法可以在响应中添加几个相同的命名标题?或者,如果还有其他正确的方法吗?

我见过使用逗号分隔cookie的建议,但我的经验是浏览器只能读取第一个cookie.

java cookies servlets

4
推荐指数
1
解决办法
2万
查看次数

标签 统计

java ×2

cookies ×1

optimization ×1

regex ×1

servlets ×1