我有一个复杂的正则表达式,我想申请。这是我的模式:如何正确地转义此字符串?
/(?:^|\s|[\.(\+\-\,])(?:\$?)\$((?:[0-9]+(?=[a-z])|(?![0-9\.\:\_\-]))(?:[a-z0-9]|[\_\.\-\:](?![\.\_\.\-\:]))*[a-z0-9]+)/i
我怎样才能声明这是一个字符串,并确保一切都逃脱?
我有一个复杂的正则表达式,我想申请。这是我的模式:如何正确地转义此字符串?
/(?:^|\s|[\.(\+\-\,])(?:\$?)\$((?:[0-9]+(?=[a-z])|(?![0-9\.\:\_\-]))(?:[a-z0-9]|[\_\.\-\:](?![\.\_\.\-\:]))*[a-z0-9]+)/i
我怎样才能声明这是一个字符串,并确保一切都逃脱?
在我看来,好像有在正则表达式很多不必要的东西
(?:\$?)
相同,只是\$?
那么你真正可以拥有的是:
/(?:^|\s|[.(+\-,])\$?\$((?:[0-9]+(?=[a-z])|(?![0-9.:_\-]))(?:[a-z0-9]|[_.\-:](?![._\-:]))*[a-z0-9]+)/i
至于把它在一个字符串,你真的不必担心这里的反斜杠。那些需要加倍(“\”)。外部的“/”字符将被丢弃,并且尾随的“i”修饰符将被传递到Pattern.compile()
方法中。
如果你想测试这种模式,我建议你看看使用正则表达式工具,如gskinner。它可以让你放入一个模式,一个字符串,并突出显示匹配。
只要有点静态的解决方案就足够了,并且如果您使用Eclipse IDE,则可以选择在从剪贴板粘贴时正确转义字符串。
首选项 - >爪哇 - >编辑 - >键入 - > [X]粘贴时逃生的文字...
第一步:通过摆脱不必要的反斜杠和组简化你的模式:`/(?:[|[\s.(+,-])\$?\$((?:[0-9]+ (?= [AZ])|(?![0-9.:_-]))(?:[a-z0-9]|[.:_-](?![.:_-])) * [a-z0-9] +)/我' – Gumbo 2010-11-22 18:06:58