我有一些像这样的字符串:
TFjyg9780878_867978-DGB097908-78679iuhi698_widesky_light_87689uiyhk
和
TFjyg9780878_867978-DGB097908-78679iuhi698_sky_light_87689uiyhk
和
TFjyg9780878_867978-DGB097908-78679iuhi698_widesky_dark_87689uiyhk
和
TFjyg9780878_867978-DGB097908-78679iuhi698_sky_dark_87689uiyhk
我需要检查上面的字符串是否具有精确的widesky_light
,sky_light
,widesky_dark
和sky_dark
之一,所以我写了这个:
if my_string.match("widesky_light")
...
end
对于每个变体,但我遇到的问题是因为sky_light
和widesky_light
相似,我的代码无法正常工作。我相信上面的解决方案将是一个正则表达式,但我昨天下午花了很多时间试图让它工作。
有什么建议吗?
修改
警告:在此字符串中(例如):TFjyg9780878_867978-DGB097908-78679iuhi698_widesky_light_87689uiyhk
,widesky_light
之后的部分_87689uiyhk
是可选的,这意味着有时我拥有它,有时我不会&# 39; t,因此解决方案无法依靠_string_
。
答案 0 :(得分:2)
您似乎只需要重新排序createDataSet(.Object=GroupHandler,
datasetname="chrX",
type="double",
chunksize=4,
compression=9,
dimensions=c(length(chrX.ranges),length(chrX.ranges)),
maxdimensions=c(length(chrX.ranges),length(chrX.ranges)))
语句
if
答案 1 :(得分:1)
也许是这样的:
case my_string
when /_(sky_light)/
# just sky_light
when /sky_light/
# widesky_light
when /_(sky_dark)/
# just sky_dark
when /sky_dark/
# widesky_dark
else
puts "I don't like"
end
答案 2 :(得分:1)
这是一个只与有趣部分匹配的正则表达式:
(?<=_)[a-z_]+(?=(?:_|\b))
这意味着lowercase word with possible underscore inside, between 2 underscores or after 1 underscore and before a word boundary
。
如果你需要一些逻辑视情况而定(宽阔,天空,明亮或黑暗),你可以使用这个解决方案。
Here正在行动中。
如果您只想知道是否存在4种情况中的任何一种:
(?<=_)(?:wide)?sky_(?:dark|light)(?=(?:_|\b))
Here正在使用_something_after
或任何内容。
list = %w(
TFjyg9780878_867978-DGB097908-78679iuhi698_widesky_light_87689uiyhk
TFjyg9780878_867978-DGB097908-78679iuhi698_sky_light_87689uiyhk
TFjyg9780878_867978-DGB097908-78679iuhi698_widesky_dark_87689uiyhk
TFjyg9780878_867978-DGB097908-78679iuhi698_sky_dark_87689uiyhk
TFjyg9780878_867978-DGB097908-78679iuhi698_trash_dark_87689uiyhk
)
list.each do |string|
case string
when /widesky_light/ then puts "widesky light found!"
when /sky_light/ then puts "sky light found!"
when /widesky_dark/ then puts "widesky dark found!"
when /sky_dark/ then puts "sky dark found!"
else puts "Nothing found!"
end
end
按此顺序,案例陈述应该没问题。例如,widesky_dark
将不会匹配两次。