Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何删除字符串开头的非字母_Ruby_Regex_Substitution_Letters - Fatal编程技术网

Ruby 如何删除字符串开头的非字母

Ruby 如何删除字符串开头的非字母,ruby,regex,substitution,letters,Ruby,Regex,Substitution,Letters,我正在使用Ruby 2.4。如何删除字符串开头的非字母?我想我可以做一些类似的事情 name ? name.sub(/^[^a-z]*/i, "") : nil 但这忽略了像重音a(“á”)或上面有点的那种类型的“u” 我不考虑数字或标点符号字母,所以我希望从字符串的开头删除它们。 你可以用Unicode类类匹配非字母:< > > p{L}: name = name.sub(/\A\P{L}+/, "") 图案细节: \A-字符串锚的开始 \P{L}+-一个或多个(+)字符,而不是字母(\

我正在使用Ruby 2.4。如何删除字符串开头的非字母?我想我可以做一些类似的事情

name ? name.sub(/^[^a-z]*/i, "") : nil
但这忽略了像重音a(“á”)或上面有点的那种类型的“u”


我不考虑数字或标点符号字母,所以我希望从字符串的开头删除它们。

你可以用Unicode类类匹配非字母:< > > p{L}:

name = name.sub(/\A\P{L}+/, "")
图案细节

  • \A
    -字符串锚的开始
  • \P{L}+
    -一个或多个(
    +
    )字符,而不是字母(
    \P{L}

相同的正则表达式,但符号有点不同:
/\a\p{^L}+/
值得一提的是,
^
在Ruby中表示行的开头,而
\a
表示字符串的开头。
^
版本似乎适用于单行字符串,但很容易与换行符混淆。