正则表达式获取倒数第二个特殊字符之前的所有数据

时间:2018-09-24 07:16:12

标签: regex

我找不到类似的以前问过的问题。我需要一个正则表达式来获取倒数第二个特殊字符之前的所有数据。

例如:

""

我只需要.col-xs-12.right-content-block .faces.slider-team-slick-js - @development.each do |developer| .col-xs-4 .flex-item.animated.fadeInDown.rectangle-and-text-hover.img-face style="background-image: url(#{image_path(developer.image_url)});"> .text p.name = developer.name .horizontal-line p.specialization= developer.title

我知道如何使用suite 1, street 1, zip city, country 仅在最后一个特殊字符之前获取数据,而不是倒数第二个特殊字符。

4 个答案:

答案 0 :(得分:3)

您可以使用以下正则表达式,第一个捕获组将具有所需的子字符串:

(.*)(?:,[^,]*){2}$

演示:https://regex101.com/r/AWpsL3/1

或者,如果您使用的工具确实支持捕获组,则可以将以下正则表达式与超前配合使用:

.*(?=(?:,[^,]*){2}$)

演示:https://regex101.com/r/AWpsL3/4

答案 1 :(得分:1)

您可以使用向前看

.+(?=.*,.*,)

解释

  • .+匹配所有内容,直到前瞻不会失败
  • 积极向前看(?=.*,.*,) 断言末尾有两个逗号

check demo

答案 2 :(得分:0)

取决于正则表达式的实现,它可能不支持环视(上述解决方案使用的环视)。解决方法是对定界符(在本例中为逗号)执行字符串拆分。然后执行前两个元素的字符串连接。

mystr = 'suite 1, street 1, zip city, country';
parts = mystr.split(',');
return parts[0]+','+parts[1];

答案 3 :(得分:0)

尝试(([ \w]+,?){2})(?=,)并且不要使用全局标志(在第一次比赛后不会返回)

regex