【问题标题】:JavaScript Regular Expression to Java Regular ExpressionJavaScript 正则表达式到 Java 正则表达式
【发布时间】:2012-01-16 14:51:48
【问题描述】:

我有一小段用 Javascript 编写的遗迹代码,用于扫描网页源并查找模式。

我正在将功能迁移到 Java 程序。那么,我的问题是如何将 JavaScript 正则表达式解析为具有某种查找和替换功能的 Java 表达式?

例如,我的 JavaScript 正则表达式当前读取(作为字符串)

RegEx = "/(\\/addthis_widget\\.(js|php)|\\.addthis\\.com\\/js\\/widget\\.(js|php))/i";

我在 stackoverflow 上找到了这篇旧帖子:

How to convert javascript regex to safe java regex?

这表明这可以解决问题:

strOutput.replace("/{{[^]*?}}/g","");

但是,这似乎不够健壮,并且不会生成编译器识别的 RegEx。

【问题讨论】:

  • 我想知道是否可以从 JavaScript 正则表达式自动生成 Java 正则表达式。不过,我不确定是否有任何工具。
  • 本题还讨论了正则表达式从 JavaScript 到 Java 的转换:stackoverflow.com/questions/8754444/…

标签: java javascript regex


【解决方案1】:

去掉开头的 / 和结尾的 /i。 在开头添加 (?i)。

Java 不使用/expr/options 格式。 /expr/G 会被替换为 \G 边界匹配,但在 java 中你通常只调用 matcher.find() 多次,它会自动开始搜索前一个匹配的末尾,使得 \G 毫无意义。

将所有\\/改为/,正斜杠不需要转义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 2015-03-21
    • 1970-01-01
    • 2014-05-30
    相关资源
    最近更新 更多