如何用正则表达式匹配字符串最后一个'-'和'~'之间的内容
解决方案
可以通过正则实现该需求,核心是匹配字符串中**最后一个-**之后的所有内容即可,符合要求的正则如下:
.*-\s*(.*)
正则逻辑说明
.*贪婪匹配尽可能多的字符,直到定位到整个字符串的最后一个--\s*匹配最后一个-以及它后面可选的空格(.*)捕获剩余的全部内容,最终捕获组1的结果就是你需要的To Win2 ~JIM FURYK
原正则错误原因
你之前使用的\-([^)]+\~)存在两个问题:
[^)]+的匹配规则是排除)字符,和你的实际需求场景不匹配- 正则会从第一个
-就开始匹配,自然会把前面的To Win1等内容也包含到结果中,不符合你要取最后一段的要求
如果你的场景需要严格限定匹配范围是最后一个-到~以及后续内容,也可以使用如下写法,效果一致:
.*-\s*([^~]+~.*)
内容的提问来源于stack exchange,提问作者user3708221
相关产品推荐
相关产品推荐

