我使用的是Ruby 2.4。我想在我的字符串的开头替换不包含任何字母的单词。 A"字"是由空格(或行的开头或结尾)包围的任何字符序列。例如,这个字符串
123 255 abc
会变成
abc
while this string
1556 2a2 ccc
会变成
2a2 ccc
我试过了
string.gsub(/\A[[:space:]]*[^\p{L}]+/, '')
但这还没有完成。如何替换字符串开头不包含字母的所有单词?
答案 0 :(得分:3)
你可能需要一个单词边界(\b
)和锚点(而不是\A
)。
这按预期工作:
^[[:space:]]*[^\p{L}]+\b
<小时/>
正如@Cary在评论中所指出的,你甚至可以简化你的表达
\A[^\p{L}]+\
(或者每行开头^[^\p{L}]+\
)。
答案 1 :(得分:1)
这将:
string.gsub(/^[^a-zA-Z]+\s/, '')
或(如果你想匹配unicode字符):
string.gsub(/^[^\p{L}]+\s/, '')
查看
答案 2 :(得分:0)
您可以使用.split
将字符串拆分为单词,drop_while
来过滤正则表达式中的第一个单词:
> ' 123 255 abc'.split().drop_while { |e| e=~/^\d+$/ }.join(' ')
=> "abc"
> '1556 2a2 ccc'.split().drop_while { |e| e=~/^\d+$/ }.join(' ')
=> "2a2 ccc"