Pattern.compile()方法的重要性是什么?
为什么我需要在获取Matcher对象之前编译正则表达式字符串?
例如 :
String regex = "((\\S+)\\s*some\\s*";
Pattern pattern = Pattern.compile(regex); // why do I need to compile
Matcher matcher = pattern.matcher(text);
Run Code Online (Sandbox Code Playgroud) 我有一个函数,它使用Pattern#compile和a Matcher来搜索模式的字符串列表.
此函数用于多个线程.每个线程都将传递给Pattern#compile创建线程时的唯一模式.线程和模式的数量是动态的,这意味着我可以Pattern在配置期间添加更多的s和线程.
synchronize如果使用正则表达式,我是否需要使用此功能?java线程中的正则表达式是否安全?
我正在学习如何使用正则表达式:
我正在阅读一个文本文件,该文件被分成两个不同类别的部分,由<:==]:>和划分
<:==}:>.我需要知道每个部分是否是一个]或},所以我不能只是做
pattern.compile("<:==]:>|<:==}:>"); pattern.split(text)
Run Code Online (Sandbox Code Playgroud)
这样做:
pattern.compile("<:=="); pattern.split(text)
Run Code Online (Sandbox Code Playgroud)
工作,然后我可以看看每个子字符串中的第一个字符,但这对我来说似乎很草率,我想我只是诉诸它,因为我没有完全掌握我需要掌握的关于正则表达式的东西:
这里最好的做法是什么?另外,有没有办法将字符串分开,同时在结果字符串中留下分隔符 - 这样每个字符串都以分隔符开头?
编辑:文件布局如下:
Old McDonald had a farm
<:==}:>
EIEIO. And on that farm he had a cow
<:==]:>
And on that farm he....
Run Code Online (Sandbox Code Playgroud)