我有以下正则表达式 \b(\w+)$
可用于查找字符串中的最后一个单词。然而,字符串越长,所需的步骤就越多。
如何让它从行尾开始搜索?
最佳答案
回答
简介
使用您指定的正则表达式\b(\w+)$
,您将获得越来越多的步骤,具体取决于字符串的长度(它将匹配每个\b
,然后每个 \b\w
,然后每个 \b\w\w
,直到找到 \b\w$
的正确匹配),但它仍然必须对字符串中的每个项目进行检查,直到满意为止。
要显式使用正则表达式获取字符串的最后一项,可以执行以下操作:翻转字符串,然后使用 ^
anchor 。这将导致正则表达式在第一次匹配时立即满足并停止处理。
您可以搜索如何用多种语言翻转字符串。一些语言示例如下:
代码
You can see the regex in use here
您的编程语言
// flip string code goes here
正则表达式
^(\w+)
您的编程语言
// flip regex capture code goes here
输入
This is my string
输出
通过翻转您的语言中的字符串转换为以下内容
gnirts ym si sihT
正则表达式返回以下结果
gnirts
将字符串翻转回您的语言
string
说明
由于使用了 anchor ^
,它将从字符串的开头进行检查(按照通常的正则表达式行为)。如果满足,它将返回匹配项,否则,它将不返回任何匹配项。在 regex101 中进行的测试(通过代码部分中的链接提供)表明,只需 6 个步骤即可确保进行匹配。它还需要 3 个步骤来确保不匹配。这些值不会随着字符串长度的变化而改变。
关于正则表达式最后一个单词从字符串末尾开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46225397/