gpt4 book ai didi

java - 在保留 "smileys"的同时从字符串中删除多余的标点符号?

转载 作者:行者123 更新时间:2023-11-30 07:27:21 26 4
gpt4 key购买 nike

我在使用正则表达式时遇到了一些问题。你能帮帮我吗?以下是我要解决的问题 -

Input - :,... :(..:::))How are you today?..:(
Output - :( :) How are you today :(

基本上我想从输入字符串中删除标点符号,如 -(.,:; 等) 并将它们替换为空字符串。但我想保留表情符号 -:) 或 :( 。我已经编写了以下代码,但它不起作用。

String s = ":,... :(..:::))How are you today?..:( ";  
Pattern pattern = Pattern.compile("^(\\Q:)\\E|\\Q:(\\E)(\\p{P}+)");
Matcher matcher = pattern.matcher(s);
s = matcher.replaceAll("");

谢谢。

最佳答案

尝试这样的事情:

[\p{P}&&[^:()]]|:(?![()])|(?<!:)[()]

快速分解:

[\p{P}&&[^:()]]    # any punctuation mark except ':', '(' and ')'
| # OR
:(?![()]) # a ':' not followed by '(' or ')'
| # OR
(?<!:)[()] # a '(' or ')' not preceded by ':'

请注意,[ ... && [^ ... ]](集合减法)是 Java 的正则表达式实现所独有的。请参阅:http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html

关于java - 在保留 "smileys"的同时从字符串中删除多余的标点符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9778310/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com