mor*_*ipo 11 ruby regex string random-sample
在Python语言中,我发现rstr可以为正则表达式模式生成一个字符串.
或者在Python中我们有这个方法可以返回字符串的范围:
re.sre_parse.parse(pattern)
#..... ('range', (97, 122)) ....
Run Code Online (Sandbox Code Playgroud)
但在Ruby中我没有找到任何东西.
那么如何在Ruby(反向正则表达式)中为正则表达式模式生成字符串?
我想要这样的事情:
"/[a-z0-9]+/".example
#tvvd
"/[a-z0-9]+/".example
#yt
"/[a-z0-9]+/".example
#bgdf6
"/[a-z0-9]+/".example
#564fb
Run Code Online (Sandbox Code Playgroud)
"/ [a-z0-9] + /"是我的输入.输出必须是我的正则表达式模式中可用的正确字符串.这里的输出是:tvvd,yt,bgdf6,564fb, "example"方法生成它们.我需要那种方法.
谢谢你的建议.
在Ruby中:
/qweqwe/.to_s
# => "(?-mix:qweqwe)"
Run Code Online (Sandbox Code Playgroud)
当你声明一个Regexp
,你有Regexp
类对象,将它转换为String
类对象时,你可以使用Regexp
方法#to_s
.在转换过程中,将扩展特殊字段,如示例中所示.使用:
(使用(?opts:source)表示法.这个字符串可以反馈到Regexp :: new到正则表达式,其语义与原始语法相同.
此外,您可以使用Regexp
的方法#inspect
,其中:
产生一个通常更易读的rxp版本.
/ab+c/ix.inspect #=> "/ab+c/ix"
Run Code Online (Sandbox Code Playgroud)
注意:是,上述方法仅用于普通转换Regexp
成String
,并以匹配或选择组串到一个另外一个,我们使用其他方法.例如,如果你有一个sourse数组(或者你想用#split
方法拆分的字符串),你可以grep它,并得到结果数组:
array = "test,ab,yr,OO".split( ',' )
# => ['test', 'ab', 'yr', 'OO']
array = array.grep /[a-z]/
# => ["test", "ab", "yr"]
Run Code Online (Sandbox Code Playgroud)
然后将数组转换为字符串:
array.join(',')
# => "test,ab,yr"
Run Code Online (Sandbox Code Playgroud)
或者只是使用#scan
方法,略加改变正则表达式:
"test,ab,yr,OO".scan( /[a-z]+/ )
# => ["test", "ab", "yr"]
Run Code Online (Sandbox Code Playgroud)
但是,如果你真的需要一个与regexp匹配的随机字符串,你必须编写自己的方法,请参考帖子,或者使用ruby-string-random库.图书馆:
根据Regexp语法或模式生成随机字符串.
代码将如下所示:
pattern = '[aw-zX][123]'
result = StringRandom.random_regex(pattern)
Run Code Online (Sandbox Code Playgroud)
派对有点晚了,但是 - 最初受到这个stackoverflow线程的启发 - 我创建了一个强大的ruby gem来解决原始问题:
https://github.com/tom-lord/regexp-examples
/this|is|awesome/.examples #=> ['this', 'is', 'awesome']
/https?:\/\/(www\.)?github\.com/.examples #=> ['http://github.com', 'http://www.github.com', 'https://github.com', 'https://www.github.com']
Run Code Online (Sandbox Code Playgroud)
您还可以使用Faker gem https://github.com/stympy/faker,然后使用此调用:
Faker::Base.regexify(/[a-z0-9]{10}/)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5648 次 |
最近记录: |