Java 删除标点符号、非阿拉伯语单词和数字(点和逗号除外)

Java 删除标点符号、非阿拉伯语单词和数字(点和逗号除外),java,regex,Java,Regex,我正在尝试编写一个正则表达式,它可以执行以下操作: 删除标点符号、非阿拉伯单词和数字(点和逗号除外) 我希望使用两个单独的正则表达式在java中执行以下操作: 删除除点和逗号以外的标点和数字 删除除点和逗号以外的非阿拉伯语单词 请注意,我知道以下内容,但我不能从regx中排除不匹配的点和逗号: “[\\p{p}\\p{Digit}]”-->用于删除数字和标点正则表达式 “[^\\p{InArabic}]+”-->用于删除非阿拉伯字母regex 例如: (年龄):年龄 执行两个正则表达式后,我们应

我正在尝试编写一个正则表达式,它可以执行以下操作: 删除标点符号、非阿拉伯单词和数字(点和逗号除外)

我希望使用两个单独的正则表达式在java中执行以下操作:

  • 删除除点和逗号以外的标点和数字
  • 删除除点和逗号以外的非阿拉伯语单词
  • 请注意,我知道以下内容,但我不能从regx中排除不匹配的点和逗号:

    “[\\p{p}\\p{Digit}]”
    -->用于删除数字和标点正则表达式

    “[^\\p{InArabic}]+”
    -->用于删除非阿拉伯字母regex

    例如:

    (年龄):年龄

    执行两个正则表达式后,我们应该得到以下结果: العمر هو الشيء الوحيد الذي كلما زاد نقن


    任何帮助都将不胜感激,因为我尝试了许多可能性,但都没有成功。

    您可以将求反字符类与集合交集操作符结合使用
    &&

    "[^.,&&[\\p{P}\\p{Digit}]]+"
    
    匹配除逗号和句点外的数字和标点符号

    对于第二个问题,只需将逗号/句点添加到已被否定的charclass:

    "[^\\p{InArabic}.,]+"
    
    要将两者结合起来,可以使用

    "[^.,&&[\\P{InArabic}\\p{P}\\p{Digit}]]+"
    

    若要从集合中排除某些元素,可以将此集合与集合一起使用,集合包含除要排除的元素之外的所有元素(它是)。换言之:

    A
    \
    B=A
    Bc

    在正则表达式中,字符类的交集
    […]
    表示
    &&
    ,因此您可以尝试以下操作

  • “[\\p{p}\\p{Digit}&[^,.]]”
  • “[\\P{InArabic}&&[^,.]]”
    \\P{xxx}
    是对
    \\P{xxx}
    的否定,反之亦然)

  • 我没有得到你的第一个正则表达式。它的意思是删除除标点、数字、点、逗号以外的所有内容。不是吗?@SabujHassan:No,
    \p{p}
    匹配任何标点符号,而
    \p{p}
    将其反转,匹配任何非标点符号的字符。所以
    [^\P{P}]
    然后与
    \P{P}
    匹配。但是由于我们现在使用的是否定字符类,我们可以通过将字符添加到字符类中来减去我们不想包含在匹配中的字符。非常感谢,这对我很有用。非常感谢您的帮助。如果我想在一个regx中创建两个相同的regx,我如何编写它?@Eng.Lolina:我离开电脑几天了,现在已经更新了regex(并更正了第一个对我来说不正常的regx)。在创建和测试正则表达式时,发布输入和预期输出/结果的示例可能对我们非常有用(这里不是每个人都使用阿拉伯语)。好的观点,这里有一个示例:年龄:年龄。在执行两个正则表达式之后,我们应该得到以下结果:ا。而是在你的问题下使用[]按钮,并将这些信息放在那里。非常有用的信息,因为我是regex新手,非常感谢,它也适用于我。非常感谢您的帮助。我很高兴您喜欢:)如果我想在一个regx中创建两个相同的regx,我如何编写它?@Eng.Lolina我不确定“一个regx中的两个regx”是什么意思,但也许您正在寻找OR运算符,它是
    |
    。您可以尝试类似于
    regex1 | regex2
    的方法来包含两个正则表达式中的匹配项。第一个正则表达式“[\\p{p}\\p{Digit}&&[^,.]]”正在删除标点和数字,除了。而第二个“[\\P{InArabic}&[^,.]]”正在删除非阿拉伯语字符,除了。现在,我想要一个正则表达式,它除去标点符号、数字和非阿拉伯字符,除了。以及,