我有一个输入字符串.
我正在考虑如何有效地将此字符串与多个正则表达式匹配.
Example Input: ABCD
Run Code Online (Sandbox Code Playgroud)
我想与这些注册模式进行匹配,true如果至少其中一个匹配,则返回:
[a-zA-Z]{3}
^[^\\d].*
([\\w&&[^b]])*
Run Code Online (Sandbox Code Playgroud)
我不确定如何一次匹配多个模式.有人可以告诉我,我们如何有效地做到这一点?
Mar*_*nik 22
如果你只有几个正则表达式,并且它们在编译时都是已知的,那么这就足够了:
private static final Pattern
rx1 = Pattern.compile("..."),
rx2 = Pattern.compile("..."),
...;
return rx1.matcher(s).matches() || rx2.matcher(s).matches() || ...;
Run Code Online (Sandbox Code Playgroud)
如果它们中有更多,或者它们是在运行时加载的,那么使用模式列表:
final List<Pattern> rxs = new ArrayList<>();
for (Pattern rx : rxs) if (rx.matcher(input).matches()) return true;
return false;
Run Code Online (Sandbox Code Playgroud)
van*_*ale 19
你可以用一个大的正则表达式:
[a-zA-Z]{3}|^[^\\d].*|([\\w&&[^b]])*
Run Code Online (Sandbox Code Playgroud)