正则表达式匹配以某个词结尾的字符串中的最后一个单词

4
我想使用正则表达式匹配以 ... 结尾的字符串中的最后一个单词,匹配结果应为 ... 前面的单词。
例如:"Do not match this. This sentence ends in the last word..."
匹配结果应该是 word。这个正则表达式有点接近: \b\s+([^.]*)。但是,我不知道如何让它只匹配在结尾处的 ...
这个应该不被匹配:"Do not match this. This sentence ends in the last word."

3
这是一个正则表达式的语法,用于匹配以三个点“...”结尾的字符串。 - Andreas Louv
2个回答

2
如果您使用\s+,这意味着至少必须有一个空格字符在其前面,因此在这种情况下它将不能匹配word...。如果您想使用否定字符类,也可以使用。
([^\s.]+)\.{3}$
  • ( 捕获 第1组
    • [^\s.]+ 匹配1个或多个非空格字符或点
  • ) 结束组
  • \.{3} 匹配3个点
  • $ 字符串结尾

正则表达式演示


0

你可以使用$将正则表达式锚定到结尾。要匹配一个字面上的句点,你需要转义它,否则它会被视为元字符:

(\S+)\.\.\.$

\S 匹配除空格类字符以外的所有字符,具体匹配内容取决于你使用的正则表达式引擎,但通常它排除了空格、制表符、换行符和一组 Unicode 空格。

你可以在这里尝试它:

https://regex101.com/r/xKOYa4/1


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接