Java 正则表达式错误:这个正则表达式有什么问题?
我正在尝试为Java程序编写一个正则表达式,它匹配所有JS代码片段,如下所示: window.box | | box=函数{box.q.pusharguments;}.q=[]; 框'ns:foo','event','bar',{分隔符:'null',显示名称:'baz',id:'12345',名称:'attr_1',值:'attr_val',事件类型:'abc'}; 这就是我到目前为止所做的: 私有最终静态字符串脚本\u CODE\u REG\u EXP=^\\n.\\\n框\\'ns:.''.','event','%s',\\{%s\\\}{1}\\\\新西兰元 JSON值{分隔符:'null',显示名称:'baz',id:'12345',名称:'attr_1',值:'attr_val',事件类型:'abc'}将作为String.format的一部分传入Java 正则表达式错误:这个正则表达式有什么问题?,java,regex,Java,Regex,我正在尝试为Java程序编写一个正则表达式,它匹配所有JS代码片段,如下所示: window.box | | box=函数{box.q.pusharguments;}.q=[]; 框'ns:foo','event','bar',{分隔符:'null',显示名称:'baz',id:'12345',名称:'attr_1',值:'attr_val',事件类型:'abc'}; 这就是我到目前为止所做的: 私有最终静态字符串脚本\u CODE\u REG\u EXP=^\\n.\\\n框\\'ns:.
我无法将JS代码段与该正则表达式匹配。如果您查看此正则表达式,java将其解释为:
(^<script>\n.*\n box(\('ns:.*','event', '%s',)(\{%s\}){1}\)(;\n</script>$)
^... The opening parenthesis is without a corresponding closing parenthesis.
这就是为什么这个正则表达式会给你一个错误。试试这个正则表达式:
^<script>\n.*\n box\('ns:.*','event', '%s', \{%s\}\);\n</script>$
爪哇:
变化
删除了不需要的括号或括号位置不正确
在“%s”之后添加了缺少的空格,
删除了不需要的量词{1}
您的问题并不完全清楚,但请确保将两个对象传递给format,因为有两个格式说明符
在将值插入模式之前,请确保将其删除
您可以使用诸如测试正则表达式模式之类的工具,但是它不支持Java正则表达式表示法,因此某些功能可能不可用或仅以不同的形式提供。您是否使用确保JSON值不包含正则表达式模式?我阅读了关于Pattern.quote的内容。你的意思是用它来定义一个调用split方法的模式,然后计算我的JSON ish模式中的元素数吗?我不太清楚你的意思是什么。您应该使用Patternquote,因为JSON字符串可能包含在有效的正则表达式中,例如{display_name:},插入时,它将与文本*不匹配,但将是前面的量词。我在regex101中尝试了以下操作:^\n.*\n Krux'ns:.*','admEvent',Mb OWQYG',\{.}\n$,它与脚本匹配。但是,当我试图在Java代码中使用这个正则表达式时,正则表达式的最终字符串regex=^\\n.*\\n Krux'ns:.*'、'admEvent'、'Mb OWQYG'、\\{.\\\}\\新西兰元;总是打印额外的。我不知道逃跑有什么不对。请帮忙!你所说的正则表达式[…]正在打印是什么意思?括号前面的反斜杠也必须转义。
String patternString = "^<script>\\n.*\\n box\\('ns:.*','event', '%s', \\{%s\\}\\);\\n</script>$";