[英]Regex error: What is wrong with this Regex?
我正在嘗試為匹配所有JS代碼片段的Java程序編寫正則表達式,如下所示:
<script> window.box||((box=function(){box.q.push(arguments);}).q=[]); box('ns:foo','event', 'bar', {delimiter:'null',display_name:'baz',id:'12345',name:'attr_1',value:'attr_val',event_type:'abc'}); </script>
這是我到目前為止的內容:
private final static String SCRIPT_CODE_REG_EXP = "(^<script>\\\\n.*\\\\n box(\\\\('ns:.*','event', '%s',)(\\\\{%s\\\\}){1}\\\\)(;\\\\n</script>$)";
JSON值{delimiter:'null',display_name:'baz',id:'12345',name:'attr_1',value:'attr_val',event_type:'abc'}將作為String.format的一部分傳入()。
我無法將JS代碼段與該正則表達式匹配。
試試這個正則表達式:
^<script>\n.*\n box\('ns:.*','event', '%s', \{%s\}\);\n</script>$
Java:
String patternString = "^<script>\\n.*\\n box\\('ns:.*','event', '%s', \\{%s\\}\\);\\n</script>$";
'%s',
之后添加了缺少的空間'%s',
{1}
您的問題尚不清楚,但是由於有兩個格式說明符,因此請確保將兩個對象傳遞給格式。
在將值插入模式之前,請確保將其quote
來。
您可以使用regex101之類的工具來測試regex模式,但是它不支持Java regex表示法,因此某些功能可能不可用或僅以其他形式提供。
如果您看一下此正則表達式,Java會將其解釋為:
(^<script>\n.*\n box(\('ns:.*','event', '%s',)(\{%s\}){1}\)(;\n</script>$)
^... The opening parenthesis is without a corresponding closing parenthesis.
這就是為什么此正則表達式給您一個錯誤的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.