使用正则表达式搜索HashSet

时间:2017-05-17 17:49:02

标签: java regex hashset

有一个HashSet字符串,我想搜索密钥。 HashSet内容类似于

AB
A1-A2-A3
A1
A2-A3
AD-A1
AZ
...

如果我使用theSet.contains("A1"),则仅返回A1。但是,我想获得A1-A2-A3A1以及AD-A1。我的数据文件中的特殊字符是-,如果一行包含该字符,则为分隔符。

如果我不使用HashSet并在字符串数组中搜索,那么我知道如何使用matcher()。 HashSet的任何解决方案?

2 个答案:

答案 0 :(得分:6)

没有比迭代整个HashSet并在每个元素上运行匹配器更好的解决方案了。

for (String str : set) {
  if (str.contains("A1")) {
    // do whatever with str
  }
}

答案 1 :(得分:0)

嗯,你可以试试像......

拿走所有的钥匙,并构造一个非常长的丑陋的字符串

,AB,A1-A2-A3,A1,A2-A3,AD-A1,AZ,...

然后为A1找到所有'种类'的正则表达式:

uglystring = ",AB,A1-A2-A3,A1,A2-A3,AD-A1,"
thelist = re.findall("([^,]*A1[^,]*)", uglystring)
print (thelist)

那是在python中。非常难看,但也许会让你朝着正确的方向前进?