我正在使用Rails 5.如何从字符串开头删除第一个字符不是字母的所有单词(即!〜/ \ p {L} /)?所以,如果我有一个字符串
"1000 22 cc33 dfdsf"
我希望结果是
"cc33 dfdsf"
同样,如果字符串是
"7nnn 2000 388 a 4000 bbb"
我希望结果是
"a 4000 bbb"
答案 0 :(得分:2)
我想"字"只是非空白符号的块。
您可以使用
BasketTotalPriceMinusLimitedTenderGross
<强>详情:
rx = /\G[^[:space:]\p{L}][^[:space:]]*[[:space:]]*/
puts "1000 22 cc33 dfdsf".gsub(rx, '') # => cc33 dfdsf
puts "7nnn 2000 388 a 4000 bbb".gsub(rx, '') # => a 4000 bbb
- 字符串的开头或上一场比赛的结束(因此,我们只从字符串的开头获得连续的匹配)\G
- 一个不是空格而不是字母的字符[^[:space:]\p{L}]
- 0+非空白[^[:space:]]*
- 0+空格。您可以使用的另一个正则表达式是/\A(?:[^[:space:]\p{L}][^[:space:]]*[[:space:]]*)+/
。这里,[[:space:]]*
匹配字符串的开头,\A
匹配上述模式的一个或多个连续出现。
注意:如果您想要专门匹配字母数字字词,也就是说,如果您要删除字符串开头的所有以字母开头的字词,您可以使用
(?:...)+
或
/\G\p{N}[[:alnum:]]*[^[:alnum:]]*/
其中/\A(?:\p{N}[[:alnum:]]*[^[:alnum:]]*)+/
匹配任何数字,\p{N}
匹配任何字母数字,[[:alnum:]]
匹配任何不是字母数字的字符。请参阅another Ruby demo。
答案 1 :(得分:0)
此模式搜索,直到找到第一个出现的&#34;字&#34;按照你的标准,然后它会把所有东西都拿到字符串的末尾。您可以从匹配的组中提取结果。
.*?\b([A-Za-z].*)
交换它:
.*?\b([A-Za-z][\s\S]*)
如果您需要包含行终止符。