我需要帮助来匹配字符串与ruby正则表达式。 (这是傀儡)
示例:master001,master002,master003
示例:master011,master012 ..... master997,master998,master999
答案 0 :(得分:3)
如何匹配数字的所有内容:001到010,最后。
\w+0(?:0[1-9]|10)
然后我需要匹配以:011到999开头的所有内容。
\w+(?:0[1-9]|[1-9]\d)\d
运行它
答案 1 :(得分:0)
我的第一次尝试将是那些2:
"master001".match(/010$|00[1-9]$/) #=> "001" up to "009" "010"
"master099".match(/0[1-9]\d$|[1-9]\d\d$/) #=> "011" up to "999"
修改:我的第二次尝试是那些:
"master001".match(/010$|00[1-9]$/) #=> "001" up to "009" "010"
"master099".match(/0[1-9]\d$|[1-9]\d\d$/) #=> "010" up to "999"
第二个正则表达式捕获了010,但是如果你已经在第一个正确的时候就可以了。
无论如何,对@Cyrbil赞不绝口。答案 2 :(得分:0)
"一切"在"我怎样才能匹配所有......"。很模糊可以"一切"包含任何字符,包括空格?怎么样" cat_1001",它完全由单词字符(caluclate_matrix
)组成?该字符串以数字" 1001"的字符串表示结尾。但是他的最后三个角色是" 001"?它应该匹配吗?你想匹配字符串" 007" (之前没有任何内容的三位数字)?我假设你想要匹配字符串:
假设字符串是:
"cat_1001" =~ /\w+/ #=> 0
应用我所采用的匹配规则,第一组(1-10)由Ann和Bob组成;第二组(11-999),Bee和Hank。
这可以通过以下正则表达式完成:
str = "Ann010, Bee012, Bob001 and Hank999a are MI6; 007, Deb0001 and Paul000 aren't"
提取候选人:
r = /
[a-z]+ # match one or more letters
\d{3} # match three digits
# (?!\d) # do not match another digit (negative lookahead)
/ix # case-indifferent and extended/free-spacing modes
然后可以根据需要提取:
arr = str.scan(r)
#=> ["Ann010", "Bee012", "Bob001", "Hank999", "Deb000", "Paul000"]
答案 3 :(得分:0)
Cyrbil的回答看起来不错,但它是一个思想家,它忽视了一些东西。你可以用一些丑陋的东西安全地玩它:
/\w+(?:#{('001'..'010').to_a.join('|')})\b/
和
/\w+(?:#{('011'..'999').to_a.join('|')})\b/