Java - 正则表达式,如果word包含另一个字母的所有字母

时间:2014-06-13 09:48:15

标签: java regex

是否有可能创建java正则表达式,可以定义一个单词( base )是否包含来自另一个单词的所有字母( sample frow,正确创建正则表达式)?

例如

输入 base ='Subexpressions', sample1 ='Nubs' 输出True

输入 base ='Subexpressions', sample2 ='专家' 输出False

说明: base 包含来自 sample1 的所有字母,但不包含 sample2 中的“t”。

2 个答案:

答案 0 :(得分:2)

对于正则表达式方法,以下是以编程方式执行此操作的方法。

  1. 列出字母:Subexpressions => subexprion
  2. 使用字母构建一系列前瞻,并锚定它:^(?=.*s)(?=.*u)etc(?=.*n)$
  3. 对字符串运行该正则表达式。它将充当AND,因为如果目标字符串中存在字母,则前瞻逐个检查。如果你有比赛,宾果。
  4. 当然,运行strstr 10次(每个角色一次)也可以。

    注意:有些引擎可能会报告奇怪的零宽度匹配,因此为了安全起见,您可以在前瞻后添加一个点,确保您在匹配中至少有一个字符:< / p>

    ^(?=.*s)(?=.*u)etc(?=.*n)$
    

    你不关心char,只关心是否匹配。

答案 1 :(得分:1)

这个问题并不真正需要正则表达式。只需使用这种简单的方法:

  1. 将布尔变量found设置为true
  2. 按字符迭代sample变量
  3. 检查base字符串变量
  4. 中每个字符的存在
  5. 如果找不到某个字符并将其保释出来,则将found设置为false