我在 php 中有一个正则表达式,我需要将它转换为 java。 有可能这样做吗?如果是,我该怎么办?
提前致谢
$region_pattern = "/<a href=\"#\"><img src=\"images\/ponto_[^\.]+\.gif\"[^>]*>[ ]*<strong>(?P<neighborhood>[^\(<]+)\((?P<region>[^\)]+)\)<\/strong><\/a>/i" ;
最佳答案
从任何正则表达式到 java 的典型转换是:
- 排除模式定界符 => 删除开头和结尾
/
- 删除标志,这些标志应用于 Pattern对象,这是尾随
i
.您应该将它放在 Pattern 对象的初始化中,或者将它添加到正则表达式中,例如(?i)<regex>
- 全部替换
\
与\\
,\
在 java 中已经有含义(在字符串中转义),要在 java 中的正则表达式中使用反斜杠,您必须使用\\
而不是\
, 所以\w
变成\\w
.和\\
变成\\\\
上面的正则表达式会变成
Pattern.compile("<a href=\"#\"><img src=\"images\\/ponto_[^\\.]+\\.gif\"[^>]*>[ ]*<strong>(?P<neighborhood>[^\\(<]+)\\((?P<region>[^\\)]+)\\)<\\/strong><\\/a>", Pattern.CASE_INSENSITIVE);
但是这会失败,我认为这是因为 ?P
是一个修饰符,我知道 Java 中不存在,所以它是一个无效的正则表达式。
关于java - 从 java 到 php 的正则表达式转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8015938/