java多正则表达式与搜索算法
我有一个文本文件,其中每一行都是以下任意一组的随机组合
数字-英语字母-阿拉伯语字母-标点符号
\w由前两组的a-zA-Z0-9_u组成
\p{InArabic}用于第三组
\p{Punct}它由!“#$%&;'()*+,-./:;<;=>;?@[]^ `{124;}用于第五组
我从here那里得到了这个信息
我读了一行。我唯一一次对这行做一些事情是,如果这行包含阿拉伯字母和(英文字母或Unicode符号)
在读了这个post和这个post之后,我想出了下面的表达式。显然这是错误的,因为我的输出都是错误的><
pattern = Pattern.compile("(?=\\p{InArabic})(?=[a-zA-Z])");
这是输入
1
1a
a!
aش
شa
ششa
aشش
شaش
aشa
!aش
前三个不应该匹配,但我的输出显示没有一个匹配
编辑:抱歉,我刚刚意识到我忘了更改我的标题。但是,如果你们中的任何人觉得搜索的性能更好,那么请建议一种搜索算法。用搜索算法代替正则表达式看起来很难看,但如果它表现更好,我会同意。多亏了我读到的帖子,我了解到,如果我把这个放在构造函数中,它只执行一次,而不是把它们包含在我的循环中,那么每次都会执行,那么我可以让regex更快
pattern = Pattern.compile("(?=\\p{InArabic})(?=[a-zA-Z])");
matcher = pattern.matcher("");
# 1 楼答案
如果你想找到一条混合线,你真正需要的只是两个边界条件检查
成功匹配表示混合