ruby - 如何替换字符串开头不包含字母的单词?

标签 ruby regex string

我正在使用 Ruby 2.4。我想替换字符串开头不包含任何字母的单词。 “单词”是由空格(或行的开头或结尾)包围的任何字符序列。例如,这个字符串

   123  255 abc

会变成

abc

虽然这个字符串

1556  2a2  ccc

会变成

2a2 ccc

我试过了

string.gsub(/\A[[:space:]]*[^\p{L}]+/, '')

但这还没有完成。如何替换字符串开头不包含字母的所有单词?

最佳答案

您可能需要一个词边界 (\b) 和 anchor (而不是 \A)。
这按预期工作:

^[[:space:]]*[^\p{L}]+\b

参见 a demo on rubular.com .


正如@Cary 在评论中指出的那样,您甚至可以将表达式简化为 \A[^\p{L}]+\(或者:^[^\p{L}]+\ 每行开头)。

关于ruby - 如何替换字符串开头不包含字母的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46621437/

相关文章:

c++ - libstdc++ - 由于 tr1/regex 导致编译失败

c - 为什么我不能得到整个字符串的长度?

c# - 如何在 Ado.Net 中使用 DataReader 将 varchar 获取为 byte[]?

ruby - ruby 中的插入排序算法有问题

ruby - 从 Ruby 中的多维数组创建组合

ruby - Dir[File.join(File.dirname(__FILE__), "subdirectory/**/*.rb")] 的较短版本?

ruby - 从字符串中去除括号的结尾集

java - 使用正则表达式对 URL 字符串进行编码

javascript - 通过将 replace() 与合适的正则表达式一起应用,避免将 '-' 作为用户输入

regex - 在文本之间不包含空格的匹配正则表达式是什么?