如何删除ruby中的前导和尾随非字母字符

时间:2010-06-29 09:06:48

标签: ruby regex

我想删除字符串中任何前导和尾随的非字母字符。

例如。 ":----- pt-br:-",我想要"pt-br"

由于

3 个答案:

答案 0 :(得分:9)

result = subject.gsub(/\A[\d_\W]+|[\d_\W]+\Z/, '')

将删除字符串开头和结尾的非字母。

\A\Z将正则表达式锚定在字符串的开头/结尾(^ / $也会在换行符之后/之前匹配,这可能不是什么你想要 - 但在这种情况下可能无关紧要);

[\d_\W]+匹配一个或多个数字,下划线或其他任何不是字母数字的字符,只留下字母。

|是交替运算符。

答案 1 :(得分:1)

在ruby 1.9.1中:

":----- pt-br:-".partition( /[a-zA-Z](...)[a-zA-Z]/ )[1]

分区搜索字符串中的模式并返回它之前的部分,匹配以及之后的部分。

答案 2 :(得分:0)

result = subject.gsub(/^[^a-zA-Z]+/, '').gsub(/[^a-zA-Z]+$/, '')