我有一个包含此顺序的项目列表的文件
List of items to stash (10 items):
dd98a4 41871
dd98a4 41872
dd98a4 41873
dd98a4 41874
dd98a4 41875
dd98a4 41876
dd98a4 41877
dd98a4 41878
dd98a4 41879
dd98a4 41880
我还有很多其他列表,我在这里没有包含在同一个文件中。我想得到一个正则表达式,用于检查项目"41879"
是否在"要隐藏的项目列表中#34;。所以要检查字符串"要隐藏的项目列表< 忽略其他所有内容> dd98a4 41879"。红宝石中是否有一个简单的正则表达式?
非常感谢任何帮助
答案 0 :(得分:0)
假设格式为:
list1:
item1
item2
list2:
item1
item2
item3
你正在寻找除了另一个和你的项目之外的任何东西:
<NAME OF LIST>:[^:]*<ITEM>
替换和你的字符串。
答案 1 :(得分:0)
假设我们从文件中读取以下内容:
ListView
并给出
str = <<_
List of items to hide (3 items):
cc98a4 41878
cc98a4 41879
cc98a4 41880
List of items to stash (3 items):
dd98a4 41878
dd98a4 41879
dd98a4 41880
List of items to discard (3 items):
ee98a4 41878
ee98a4 41879
ee98a4 41880
_
以下正则表达式匹配与列表list = "List of items to stash"
id = 41879
关联的行中id
之前的描述符:
list
请注意Ruby如何将r = /^#{list}[^\n]*\n+(?:\s*\w+\s+\d+[^\n]*\n)*\s*\K\w+(?=\s+#{id})/
#=> /^List of items to stash[^\n]*\n+(?:\s*\w+\s+\d+[^\n]*\n)*\s*\K\w+(?=\s+41879)/
和list
替换为正则表达式中的值。
果然:
id
这个正则表达式看起来有点复杂。然而,当你把它分解成碎片时,它并没有那么糟糕:
str[r]
#=> "dd98a4"