【发布时间】:2018-09-24 07:16:11
【问题描述】:
我找不到与此类似的任何先前提出的问题。我需要一个正则表达式来获取倒数第二个特殊字符之前的所有数据。
例如:
suite 1, street 1, zip city, country
我只需要suite 1, street 1。
我知道如何使用 [^,]*$ 获取最后一个特殊字符之前的数据,但不知道倒数第二个。
【问题讨论】:
标签: regex
我找不到与此类似的任何先前提出的问题。我需要一个正则表达式来获取倒数第二个特殊字符之前的所有数据。
例如:
suite 1, street 1, zip city, country
我只需要suite 1, street 1。
我知道如何使用 [^,]*$ 获取最后一个特殊字符之前的数据,但不知道倒数第二个。
【问题讨论】:
标签: regex
您可以使用以下正则表达式,第一个捕获组将具有您想要的子字符串:
(.*)(?:,[^,]*){2}$
演示:https://regex101.com/r/AWpsL3/1
或者,如果您使用的工具确实支持捕获组,您可以使用以下正则表达式和前瞻:
.*(?=(?:,[^,]*){2}$)
【讨论】:
【讨论】:
根据正则表达式的实现,它可能不支持环视(这是上述解决方案所使用的)。解决此问题的方法是对分隔符(在本例中为逗号)执行字符串拆分。然后执行前两个元素的字符串连接。
mystr = 'suite 1, street 1, zip city, country';
parts = mystr.split(',');
return parts[0]+','+parts[1];
【讨论】:
尝试(([ \w]+,?){2})(?=,),不要使用全局标志(第一次匹配后不返回)
【讨论】: