当前位置: 首页 > 面试题库 >

从Java中的给定文本中提取阿拉伯语短语

那弘
2023-03-14
问题内容

您能帮我找到一个包含短语列表的正则表达式,请检查给定文本中是否存在这些短语之一?

例:

如果我有hashSet以下话:

كيف الحال  
إلى أين  
أين يوجد  
هل من أحد هنا

给定的文本是: كيف الحال أتمنى أن تكون بخير

我想在执行正则表达式后得到: كيف الحال

我的初始代码:

HashSet<String> QWWords = new HashSet<String>();

QWWords.add("كيف الحال");
QWWords.add("إلى أين");
QWWords.add("أين يوجد");
QWWords.add("هل من أحد هنا");

String s1 = "كيف الحال أتمنى أن تكون بخير";

for (String qp : QWWords) {

    Pattern p = Pattern.compile("[\\s" + qp + "\\s]");

    Matcher m = p.matcher(s1);

    String found = "";

    while (m.find()) {
        found = m.group();
        System.out.println(found);

    }

}

问题答案:

[...]是字符类,字符类只能匹配它指定的一个字符。例如,像字符类[abc]只能匹配aOR bOR
c。因此,如果您只想查找单词,abc请不要将其括起来[...]

另一个问题是您\\s用作单词分隔符,因此在下面的字符串中

String data = "foo foo foo foo";

正则表达式\\sfoo\\s将无法首先匹配,foo因为 之前没有空格
因此,它将找到第一个匹配项

String data = "foo foo foo foo";
//      this one--^^^^^

现在,由于正则表达式在第二秒后就消耗了空间,foo因此无法在下一场比赛中重复使用它,因此第三次foo也将被跳过,因为之前没有可用的空间来匹配。
您也不会匹配,foo因为这次 之后 没有空格了。

要解决此问题,您可以使用\\b- 单词边界,它检查它代表的位置是否在字母数字字符与非字母数字字符之间(或字符串的开始/结尾)。

所以代替

Pattern p = Pattern.compile("[\\s" + qp + "\\s]");

Pattern p = Pattern.compile("\\b" + qp + "\\b");






Pattern p = Pattern.compile("\\b" + qp + "\\b",Pattern.UNICODE_CHARACTER_CLASS);

确保\\b在预定义的字母数字类中包含阿拉伯字符。

更新:

我不确定您的单词是否可以包含正则表达式元字符(例如){ [ + *,以防万一,您还可以html" target="_blank">添加转义机制以将此类字符转换为文字。

所以

"\\b" + qp + "\\b"

可以变成

"\\b" + Pattern.quote(qp) + "\\b"


 类似资料:
  • 问题内容: 我正在使用ADFA- LD数据集进行基于主机的入侵检测项目,现在正在进行特征提取模块。我构建了由长度为4的系统调用短语组成的短语词典。现在,为了进行特征提取,我需要将这些短语与新的系统调用轨迹进行比较(以下是一些示例): 。 我需要的是,如何将这些短语与新痕迹进行比较。我在用Java做。 我的短语字典: sys_socketcall-sys_poll-sys_clock_gettime

  • 任何帮助都很感激..谢谢..!!!

  • Adobe 亚洲语言书写器 借助 Adobe 亚洲语言书写器,您可以使用中东和南亚语言创建内容。您可以键入或混合键入阿拉伯语、希伯来语、英语和其他语言。 您可以在“段落”面板菜单(窗口 > 段落 > 面板菜单)中的可用书写器之间进行选择。例如,您可以使用中东和南亚语言单行书写器或中东和南亚语言逐行书写器。 有关 Illustrator 中支持的其他亚洲语言的更多信息,请参阅适用于亚洲语言文字的书写

  • 启用中东语言功能 若要在 Photoshop 界面中显示中东文字选项,请执行以下操作: 选取“编辑”>“首选项”>“文字”(Windows) 或“Photoshop”>“首选项”>“文字”(Mac OS)。 在“选取文本引擎选项”部分中,选取“中东”。 单击“确定”,并重新启动 Photoshop。 选取“文字”>“语言选项”>“中东语言功能”。 文本方向 要创建阿拉伯语和希伯来语内容,您可以将默

  • 在 Dreamweaver 中将双向流量应用到阿拉伯语和希伯来语文本;使用标签编辑器、“表格”属性和 Div 属性。 在中东和北非版本的此软件中,可通过阿拉伯语和希伯来语使用新的功能和改进功能。 双向文字流 中东语言的文字大多从右向左 (RTL) 书写。但是,一般而言,最常用的形式为双向 (bidi) 文字 - 混用从左向右和从右向左书写的文字。bidi 文字的一个示例是含有阿拉伯语和英语文字的段

  • 我正在开发一个应用程序,用于将阿拉伯语文本从PDF中提取到字符串变量中,每个单词以相反的顺序出现(而不是专用于解决),有时以正确的顺序出现,但分开的字符(专用于解决)类似于英语字符,但在阿拉伯语中,字符是连接在一起的。任何解决方案:我正在使用visual studio 2017 C#MVC应用程序,在windows 10本地,使用iTextSharp从PDF中读取文本。 注意:问题不仅仅是颠倒顺序