Java 如何构建与包含子字符串中所有字符的任何字符串相匹配的正则表达式?
我使用StringBuilder创建了一个正则表达式,它匹配任何包含字符串中所有字符的字符串(或者我认为是这样) 我认为这应该与以下类型的字符串匹配:Java 如何构建与包含子字符串中所有字符的任何字符串相匹配的正则表达式?,java,regex,Java,Regex,我使用StringBuilder创建了一个正则表达式,它匹配任何包含字符串中所有字符的字符串(或者我认为是这样) 我认为这应该与以下类型的字符串匹配: char [] myCharArray = {'a', 's', 'e'}; String fruits = "Apples Bananas and Grapes"; 但我得到了以下错误: java.util.regex.PatternSyntaxException: Dangling meta character '?' near index
char [] myCharArray = {'a', 's', 'e'};
String fruits = "Apples Bananas and Grapes";
但我得到了以下错误:
java.util.regex.PatternSyntaxException: Dangling meta character '?' near index 0 ?=.*a?=.*s?=.*e
我猜,你是在试图建立
(?=.*a)(?=.*s)(?=.*e)
为了充分体现,
^(?=.*s)(?=.*e)(?=.*a).*$
其中,
myRegex.append(String.format("(?=.*%c)", c));
可能部分起作用
尽管如此,对每个字符进行正向前瞻并不是真正有效的,也不是最好的方法,因为每个字符都是O(N)时间复杂度
如果您希望简化/修改/探索表达式,将在的右上面板中进行解释。如果您愿意,还可以在中查看它与一些示例输入的匹配情况
试验 输出
我猜,你是在试图建立
(?=.*a)(?=.*s)(?=.*e)
为了充分体现,
^(?=.*s)(?=.*e)(?=.*a).*$
其中,
myRegex.append(String.format("(?=.*%c)", c));
可能部分起作用
尽管如此,对每个字符进行正向前瞻并不是真正有效的,也不是最好的方法,因为每个字符都是O(N)时间复杂度
如果您希望简化/修改/探索表达式,将在的右上面板中进行解释。如果您愿意,还可以在中查看它与一些示例输入的匹配情况
试验 输出
这看起来离解决我认为你想要做的事情还很远。您是否正在尝试检查字符串是否包含所需的所有字母?例如,数组是{a,e,i,o,u},所以“This”匹配而“Ths”不匹配。是吗?是的,这就是我想要实现的。这看起来离解决我认为你想要做的事情还很远。您是否正在尝试检查字符串是否包含所需的所有字母?例如,数组是{a,e,i,o,u},所以“This”匹配而“Ths”不匹配。是吗?是的,这就是我想要实现的