删除标点符号,非阿拉伯语单词和数字,除了点和逗号

Pro*_*r14 2 java regex

我正在尝试编写一个执行以下操作的正则表达式:删除标点符号,非阿拉伯语单词和数字,除了点和逗号.

我想有两个单独的正则表达式在java中执行以下操作:

  1. 删除标点和数字,除了点和逗号.
  2. 删除除点和逗号之外的非阿拉伯语单词.

请注意,我知道以下内容,但我无法从regx中排除不匹配的点和逗号:

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

"[^\\p{InArabic}]+" - >用于删除非阿拉伯字母正则表达式

例:

العمر(age):هوالشيءالوحيدالذيكلمازادنقص.

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

任何帮助将不胜感激,因为我尝试了很多可能性,但所有这些都没有用.

Tim*_*ker 6

您可以使用与集合交集运算符组合的否定字符类&&:

"[^.,&&[\\p{P}\\p{Digit}]]+"
Run Code Online (Sandbox Code Playgroud)

匹配除逗号和句点之外的数字和标点符号.

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

"[^\\p{InArabic}.,]+"
Run Code Online (Sandbox Code Playgroud)

要将两者结合起来,您可以使用

"[^.,&&[\\P{InArabic}\\p{P}\\p{Digit}]]+"
Run Code Online (Sandbox Code Playgroud)