Java-Regex获取word是否包含另一个单词的所有字母
是否可以创建java正则表达式来定义一个单词(base)是否包含另一个单词(创建哪个正则表达式的示例)的所有字母 比如说 输入:base='Subexpressions',sample1='Nubs' 输出:Java-Regex获取word是否包含另一个单词的所有字母,java,regex,Java,Regex,是否可以创建java正则表达式来定义一个单词(base)是否包含另一个单词(创建哪个正则表达式的示例)的所有字母 比如说 输入:base='Subexpressions',sample1='Nubs' 输出:True 输入:base='Subexpressions',sample2='Expert' 输出:错误 说明:base包含来自sample1的所有字母,但不包含来自sample2的“t”。此问题实际上不需要正则表达式。只需使用以下简单方法: 将布尔变量found设置为true 逐个字符迭代
True
输入:base='Subexpressions',sample2='Expert'
输出:错误
说明:base包含来自sample1的所有字母,但不包含来自sample2的“t”。此问题实际上不需要正则表达式。只需使用以下简单方法:
found
设置为true
sample
变量base
字符串变量中是否存在每个字符found
设置为false对于正则表达式方法,以下是如何以编程方式实现它
子表达式
=>子表达式^(?=.*s)(?=.*u)等(?=.*n)$
10次(每个字符一次)也可以
注意:有些引擎可能会奇怪地报告零宽度匹配,因此为了安全起见,您可以在lookaheads后添加一个点,确保匹配中至少有一个字符:
^(?=.*s)(?=.*u)etc(?=.*n)$
您不关心字符,只关心是否有匹配项。为什么需要正则表达式?@Duncan It必须使代码简洁明了,如base.matches(createRegex(sample))
。没有对基本单词和示例单词索引的迭代。嗯。。。如果要在方法名中隐藏复杂性,则可以执行所有您喜欢的迭代,并将其称为containsAll(base,sample)
。我怀疑由此产生的正则表达式将很难阅读,因此更难维护。谢谢。稍微修改一下这个解决方案对我来说很好:(.*)(?=.*s)(?=.*u)等(?=.*n)(.*)
还有什么其他选项可以让它更快?