Regex 正则表达式获取最后一个特殊字符之前的所有数据
我以前找不到任何类似的问题。我需要一个正则表达式来获取最后一个特殊字符之前的所有数据 例如:Regex 正则表达式获取最后一个特殊字符之前的所有数据,regex,Regex,我以前找不到任何类似的问题。我需要一个正则表达式来获取最后一个特殊字符之前的所有数据 例如: suite 1, street 1, zip city, country 我只需要1号街1号套房 我知道如何使用[^,]*$获取最后一个特殊字符之前的数据,但不知道如何获取最后一个特殊字符。您可以使用以下正则表达式,第一个捕获组将具有所需的子字符串: (.*)(?:,[^,]*){2}$ 演示: 或者,如果您使用的工具不支持捕获组,则可以使用以下带有lookahead的正则表达式: .*(?=(?:
suite 1, street 1, zip city, country
我只需要1号街1号套房
我知道如何使用
[^,]*$
获取最后一个特殊字符之前的数据,但不知道如何获取最后一个特殊字符。您可以使用以下正则表达式,第一个捕获组将具有所需的子字符串:
(.*)(?:,[^,]*){2}$
演示:
或者,如果您使用的工具不支持捕获组,则可以使用以下带有lookahead的正则表达式:
.*(?=(?:,[^,]*){2}$)
演示:根据regex的实现,它可能不支持lookaround(这是上面的解决方案所使用的)。解决方法是对分隔符(在本例中为逗号)执行字符串拆分。然后执行前两个元素的字符串联接
mystr = 'suite 1, street 1, zip city, country';
parts = mystr.split(',');
return parts[0]+','+parts[1];
请尝试([\w]+,?){2})(?=,)
并不要使用全局标志(第一次匹配后不返回)
您可以使用“向前看”
.+(?=.*,.*,)
解释
匹配所有内容,直到位置查找头开始,前提是前瞻没有失败+
- 正向前瞻
断言末尾存在两个逗号(?=*,*)
抱歉,我需要一个单行正则表达式,我无法使用此代码。我已使用不使用捕获组的解决方案更新了我的答案,以防您使用的工具不支持它。如果您告诉我们您使用的是哪个工具或编程语言,这会有所帮助。它将所有数据匹配到第二个逗号,而不是最后一个逗号。