查找Regex Word的最后一次出现
Find Last Occurrence of Regex Word
如何找到具有单词边界的单词的最后一个出现?我为这个单词创建了一个正则表达式/'btotal'b/
。如何使用search()查找此表达式的最后一次出现?提前感谢您的帮助!
您可以使用负前瞻来获得最后一个匹配:
/('btotal'b)(?!.*'b'1'b)/
RegEx Demo 1
RegEx Demo 2
CCD_ 2是否定前瞻以断言捕获的组#1,即total
字不存在于当前匹配之前。
如果不使用lookahead,但使用相同的regex(已应用g
,即全局标志),则可以选择将字符串与regex匹配并获得最后一个匹配项。
var matches = yourString.match(/'btotal'b/g);
var lastMatch = matches[matches.length-1];
我喜欢@anubhava的回答。如果您的字符串可能包含换行符,您可以尝试以下负向前看:
('btotal'b)(?!.*['r'n]*.*'1)
请参阅regex101上的示例。另请参阅下文,我们将最后一次出现的total
替换为<TOTAL>
var str = `
something total abc
total
foo total anything here
total
Anything total done!
`;
var finalStr = str.replace(/('btotal'b)(?!.*['r'n]*.*'1)/, "<TOTAL>");
console.log(finalStr)
你会得到:
something total abc
total
foo total anything here
total
Anything <TOTAL> done!
@anubhava的答案对于单行输入是正确的,但这个想法是正确的。感谢您的分享!
我认为他的答案可以改进(但如果我错了,请纠正我),版本如下:
/'b(total)'b(?!['s'S]*'b'1'b)/
这里的区别在于['s'S]*
将有效地匹配任何字符,包括新行。此外,在捕获组中并不真正需要字边界CCD_ 8。
在@anubhava链接的第二个例子中,它只匹配找到的第一个total
单词,因为模式(?!.*'b'1'b)
不会考虑换行符。您可以通过在示例邮件文本的开头添加单词total
进行验证。
演示链接:https://regex101.com/r/VlhRWM/3
我只是有点担心['S's]*
模式的性能。
此外,我认为注释中报告的错误,对于未找到匹配的组,与链接演示中选择的regex ECMAScript风格有关,使用PCRE可以正确报告匹配。
注意
此模式将考虑所提供的ENTIRE输入中的有效匹配。如果每行需要匹配,则需要启用/g
全局标志并使用@anubhava answer!
- Javascript匹配以从URL中删除部分文件名-替换最后一次出现的内容
- 正在查找最后一次出现的文本
- JavaScript只有在最后一次被调用时才运行函数
- 字符串拆分并获取第一次和最后一次出现
- Regex-从第二次出现到最后一次出现
- 我如何可以忽略以前的选择,只写最后一次选择
- 异步mongodb更新循环中最后一次迭代后的重定向
- 链接超时会导致最后一次超时被拒绝
- 变量在循环的最后一次迭代中变为未定义
- 将匹配字符串中最后一次出现的点的正则表达式
- 删除/隐藏链接后最后一次出现的字符串
- 如何获取单击元素的类值,并使用此值在 jquery 中最后一次出现此类之后放置一段 html 代码
- 如何在最后一次出现某个字符后获取 url 中的参数
- 在使用 CasperJS 遍历参数化 URL 时,仅执行最后一次迭代
- 在javascript中获取除最后一次外的所有模式
- 使用lookahead获取javascript中模式的最后一次出现
- Javascript Regex匹配字符串最后一次出现后的所有内容
- 使用RegEx获取最后一次出现
- regex-查找最后一次出现之前的字符串
- 查找Regex Word的最后一次出现