javascript - 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 应该是一个变量。由于这只适用于新的正则表达式语法,我尝试像这样修改它:
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");
推荐阅读
- visual-studio-code - VSCode 禁用自动键盘导航
- date - 如何将日期传递到要搜索的 ColdFusion 集合中
- c# - 如何在我的 linux Web 服务器上运行 .dll 文件
- python - 使用合并更新 for 循环中的列
- docker - 容器中未应用“env”参数
- z3py - 我想将 BitVec 的 hammingWeight 添加到求解器,但它有问题
- php - Twilio可编程语音通话android
- android - 从 ImageButton 获取图像路径?
- javascript - 如何映射 javascript 数组的 i 和 i+1 值?
- asp.net-core - Swashbuckle.AspNetCore - 有没有办法动态设置 swagger.json 的路径?