什么是正则表达式?

时间:2016-05-27 08:00:39

标签: java regex

假设我有这样的字符串:

default-src http:// adobe.com:234 http:// omntsd.org:8790 ; frame-ancestors 'self' http:// dhimana.com:8690 http:// nishkala.com:8080  ; script-src http:// google.com:80 http:// jquery.com:80
frame-ancestors 'self' http:// dhimana.com:8690 http:// nishkala.com:8080  ; script-src http:// google.com:80 http:// jquery.com:80
default-src http:// adobe.com:234 http:// omntsd.org:8790 ; frame-ancestors 'self' http:// dhimana.com:8690 http:// nishkala.com:8080 
default-src http:// adobe.com:234 http:// omntsd.org:8790 ; frame-ancestors 'self' http:// dhimana.com:8690 http:// nishkala.com:8080  ;

现在,正则表达式(在Java中)将开始时匹配模式框架 - 祖先部分与半冒号(;)。

意味着我想匹配:

"; frame-ancestors 'self' http:// dhimana.com:8690 http:// nishkala.com:8080 "表示第一个,第三个和第四个字符串AND "frame-ancestors 'self' http:// dhimana.com:8690 http:// nishkala.com:8080 "表示第二个字符串。

使用;[ ]*frame-ancestors[^;]*正则表达式,我可以匹配第一,第三和第四。但不是第二个。

1 个答案:

答案 0 :(得分:0)

使第一个;可选。

使用

;?[ ]*frame-ancestors[^;]*
 ^

请参阅regex demo