微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Nashorn 中的正则表达式后视/前瞻

如何解决Nashorn 中的正则表达式后视/前瞻

这是我想要做的: 我想替换字符串中的某些标记,但前提是它们不在另一个单词中。 示例:

  token= pos
  replacement= XXX
//Strings to check:
  Repository
  pos
  boss && pos
  boss && xpos && pos

//Expected results:
  Repository
  XXX
  boss && XXX
  boss && xpos && XXX

为此我创建了一个正则表达式:

/(?<!\w)POS(?!\w)/

问题是 POS 应该是一个变量。 由于这仅适用于新的 Regexp 语法,因此我尝试像这样修改它:

var rx = new RegExp("(?<!\\w)" + item[0] + "(?!\\w)");

正如您可能猜到的,最后有一个循环应该替换字符串中的多个标记(不需要 /g)。 问题是,如果我尝试运行上面的代码段,我总是会得到一个期望:

RuntimeException - org.mozilla.javascript.EcmaError: SyntaxError: Invalid quantifier ?

现在我不确定问题是正则表达式错误还是仅仅是 nashorn 的限制。

解决方法

假设您只想将 pos 替换为一个独立的词,只需使用词边界:

var rx = new RegExp("\\b" + item[0] + "\\b");

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。