我想删除字符串中任何前导和尾随的非字母字符。
例如。 ":----- pt-br:-"
,我想要"pt-br"
由于
答案 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]+$/, '')