regex - 编写正则表达式,查找单 l 词到双 l 词
问题描述
我想制作一个将英式英语转换为美式英语的正则表达式。其中一部分是将诸如“分期付款”之类的词转换为“分期付款”。我目前有这个
\b([A-Za-z]*)l(?<!ll)(ful|ment)
它工作得很好,但只是在 Chrome 中;由于负面的向后看,它在 Firefox 上崩溃。不过,我需要向后看,以防止“分期付款”变成“分期付款”。
解决方案
您可以使用
/\b(?![A-Za-z]*ll(?:ful|ment)\b)([A-Za-z]*)l(ful|ment)\b/
请参阅正则表达式演示。
细节
\b
- 单词边界(单词的开头)(?![A-Za-z]*ll(?:ful|ment)\b)
-单词末尾没有 0+ 个字母、、ll
和ful
或ment
([A-Za-z]*)
- 第 1 组:0+ ASCII 字母l
- 一个l
(ful|ment)
-ful
或ment
\b
- 词尾。
推荐阅读
- android - 如何解决原因:java.lang.ClassNotFoundException:找不到类“androidx.browser.customtabs.CustomTabsIntent$Builder”
- c - 在C中使用带有void的函数指针
- javascript - 进度条挑战
- java - 使用时区格式化日期时间
- android - 安装时,我的 Flutter App 在我的 Android Kitkat 4.4.4 平板电脑上不断崩溃
- flutter - 使用 Provider 更新 DropdownButton
- c - 如何为矩阵的每个元素创建一个新过程?
- javascript - 带有查询字符串的 JavaScript 文件,用于在 img src 中动态生成画布作为 png 图像
- vue.js - NW.js 与 Vue.js 如何在用户的默认浏览器中打开链接?
- javascript - 通过在 React 中选择禁用选项作为默认选项来重置下拉列表