我有一个复杂的正则表达式我想申请。这是我的模式:
/(?:^|\s|[\.(\+\-\,])(?:\$?)\$((?:[0-9]+(?=[a-z])|(?![0-9\.\:\_\-]))(?:[a-z0-9]|[\_\.\-\:](?![\.\_\.\-\:]))*[a-z0-9]+)/i
如何将此声明为字符串并确保所有内容都已转义?
答案 0 :(得分:2)
只要有点静态的解决方案就足够了,如果您使用的是Eclipse IDE,则可以选择在从剪贴板粘贴时正确转义String。
偏好设置 - > Java - >编辑 - >打字 - > [x]粘贴时转义文字......
答案 1 :(得分:2)
在我看来,正如那个正则表达式中有很多不必要的东西
(?:\$?)
之类的内容与\$?
所以你真正可以拥有的是:
/(?:^|\s|[.(+\-,])\$?\$((?:[0-9]+(?=[a-z])|(?![0-9.:_\-]))(?:[a-z0-9]|[_.\-:](?![._\-:]))*[a-z0-9]+)/i
至于把它放在一个字符串中,你真正需要担心的是反斜杠。那些需要加倍(“\”)。外部“/”字符将被删除,并且尾随的“i”修饰符将被传递到Pattern.compile()
方法。
答案 2 :(得分:0)
如果您正在尝试测试该模式,我建议您考虑使用gskinner之类的正则表达式工具。它允许你放入一个模式,一个字符串,并突出显示匹配。