Regex 删除标点符号(保留字母数字和unicode)Java

Regex 删除标点符号(保留字母数字和unicode)Java,regex,string,unicode,Regex,String,Unicode,尝试删除所有标点符号,但保留语言所需的所有字母数字和其他类似unicode类型的字符(即非数学符号)。例如: test1string => test1string test2-string => test2string test.3!string => test3string тестовоезадание!строка. => тестовоезад

尝试删除所有标点符号,但保留语言所需的所有字母数字和其他类似unicode类型的字符(即非数学符号)。例如:

test1string                =>     test1string
test2-string               =>     test2string
test.3!string              =>     test3string
тестовоезадание!строка.    =>     тестовоезаданиестрока
I suggest using

text.replaceAll("[\\p{P}\\p{S}]+|[\\p{L}&&[^\\x00-\\x{FFFF}]]+", "")
test1string=>test1string
test2字符串=>test2string
测试3!string=>test3string
тестовоезадание!строка.    =>     тестовоезаданиестрока
我建议使用

详细信息

  • [\p{p}\p{S}]+
    -1个或多个标点符号和符号
  • |
    -或
  • [\p{L}&[^\x00-\x{FFFF}]+
    -BMP平面中定义的字母以外的一个或多个字母
见a:


String text=“test1string\ntest2 String\ntest.3!String\nзззаааааа!заааааааааааааааа107(出于性能原因,这可能是首选)尝试
text.replaceAll(“[\\p{p}\\p{S}]+|[\\p{L}&[^\\x00-\\x{FFFF}]]+”,”)