正则表达式返回ruby中的修改后的字符串

时间:2016-11-15 11:24:52

标签: ruby regex

我有一个如下所示的字符串

**102-Gracecroft-Dr_Havre-de-Grace_MD_21078_M60846-99581**

我想删除以M开头的最后一部分和将是动态值的数字。所以结果字符串应该像

"**102-Gracecroft-Dr_Havre-de-Grace_MD**"

如何使用正则表达式实现它。 我尝试了[/.*(?=[/d+]_M[\d-]+)/]

但它不起作用。有什么想法吗?

1 个答案:

答案 0 :(得分:4)

▶ str = "102-Gracecroft-Dr_Havre-de-Grace_MD_21078_M60846-99581"
#⇒ "102-Gracecroft-Dr_Havre-de-Grace_MD_21078_M60846-99581"
▶ str[/.*(?=_M[\d-]+)/]
#⇒ "102-Gracecroft-Dr_Havre-de-Grace_MD_21078"

如果星号确实是真实输入的一部分:

▶ str = "**102-Gracecroft-Dr_Havre-de-Grace_MD_21078_M60846-99581**"
▶ str.gsub /_M[\d-]+(?=\*{2}\z)/, ''
#⇒ "**102-Gracecroft-Dr_Havre-de-Grace_MD_21078**"