簡體   English   中英

正則表達式錯誤:此正則表達式有什么問題?

[英]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>$";

變化

  1. 刪除了不需要的或放置不正確的括號
  2. '%s',之后添加了缺少的空間'%s',
  3. 刪除了不需要的量詞{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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM