我有字符串:
str1 = "(name)"
str2 = "name"
我错误的正则表达式:
output1 = /^name[[:alpha:]]{1,50}/.match(str1)
output2 = /^name[[:alpha:]]{1,50}/.match(str2)
输出:
output1: nil
output2: #<MatchData "name">
我需要一个正则表达式,它将产生&#34; output2&#34;两个字符串的输出。它应该期望多个或零非alpha字符,并期望在字符串的开头。
答案 0 :(得分:0)
您的正则表达式不会考虑开头的任何非字母字符。尝试这样的事情:
^\W*name\W*
答案 1 :(得分:0)
如果您只想捕获字符串开头的第一个单词:
%w[(name) name].each do |s|
puts s[/^[^a-z]*([a-z]+)/i, 1]
end
# >> name
# >> name
将捕获通常的ASCII字符。
http://rubular.com/r/104ylEQg2l
s[/^\W*([a-z]+)/i, 1]
是Ruby的简写,用于在字符串中查找子字符串或模式。有关详细信息,请参阅String.[]
。
使用POSIX [:alpha:]
字符集捕获UNICODE字符:
%w[(name) name].each do |s|
puts s[/^[^[:alpha:]]*([[:alpha:]]+)/, 1]
end
# >> name
# >> name