我正在尝试编写一个执行以下操作的正则表达式: 删除标点符号、非阿拉伯单词和数字(点和逗号除外)。
我想要两个独立的正则表达式在java中执行以下操作:
- 删除标点符号和数字(点和逗号除外)。
- 删除除点和逗号之外的非阿拉伯语单词。
请注意,我知道以下内容,但我无法从正则表达式中排除点和逗号以使其不匹配:
"[\\p{P}\\p{Digit}]"
--> 用于删除数字和标点符号正则表达式
"[^\\p{InArabic}]+"
--> 用于删除非阿拉伯字母正则表达式
示例:
年龄(年龄):年龄。
执行两个正则表达式后,我们应该得到以下结果: ?????????????????????????????????????????????????????????????????????????????????????????????????????? 嗯嗯。
任何帮助将不胜感激,因为我尝试了很多可能性,但所有这些都不起作用。
最佳答案
您可以将否定字符类与集合交集运算符 &&
结合使用:
"[^.,&&[\\p{P}\\p{Digit}]]+"
匹配除逗号和句点之外的数字和标点符号。
对于第二个问题,只需将逗号/句点添加到已经否定的 charclass 中即可:
"[^\\p{InArabic}.,]+"
要将两者结合起来,您可以使用
"[^.,&&[\\P{InArabic}\\p{P}\\p{Digit}]]+"
关于java - 删除标点符号、非阿拉伯语单词和数字(点和逗号除外),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22898822/