我希望捕获正则表达式中字符串最后一个实例之后的所有字符。
字符串(我们在最后一个实例之后搜索的字符串)如下,无引号:" - "
或\b\s\-\s\b
:boundary(空格字符,后跟-
,并以空白字符开头。)
测试字符串如下:
One Thing - Two Things - Three Things - Four Things
所需匹配项:
Four Things
此正则表达式仅匹配字符串的 first 实例之后的所有内容:
(?<=\b\s\-\s\b)(.*)$
(返回,无引号:"Two Things - Three Things - Four Things"
)
这与最后一个单个字符 -
之后的所有内容匹配:
[^\-]+$
(返回,无引号:" Four Things"
)
有想法吗?
答案 0 :(得分:1)
答案 1 :(得分:1)
我认为您无需进行环视就可以找到自己的比赛。
您可以从字符串开头匹配除换行符以外的任何字符,然后匹配您的模式。那将匹配最后一个实例。
然后,在匹配0+的组中捕获除换行符以外的所有字符,直到字符串末尾。
^.*\b\s\-\s\b(.*)$
^
字符串的开头.*
匹配除换行符以外的所有字符\b\s\-\s\b\
匹配您的模式(.*)
在组1中捕获,匹配0+次除换行符以外的任何字符,$
字符串结尾没有列出工具或编程语言,但是如果支持\K
来忘记匹配的内容,则还可以使用:
^.*\b\s\-\s\b\K.*$
答案 2 :(得分:0)
.*(?<=\b\s\-\s\b)(.*)$
,或在您当前的正则表达式should achieve what you're after,之前放置.*
,因为默认情况下这是贪婪的匹配。
答案 3 :(得分:0)
这匹配字符串的结尾,而不是-
之后的所有-
。
-\s*([^-]+)$
这是我能想到的最简单的正则表达式。