我在 Java 中有以下函数,它接受字符串注释并返回注释,但所有尾随#
字符和#
删除后有空格的任何字符,以及多个相邻主题标签的任何序列,例如###
,替换为单个#
字符。这是代码段
private static String replaceHashTagsAndPunctuation(String comment) {
// Remove trailing '#' values
comment = comment.replaceAll("#*$", "");
// Replace instances of multiple '#' values with one '#'
comment = comment.replaceAll("#+", "#");
// Remove punctuation
comment = comment.replaceAll("[^a-zA-Z0-9 #]", "");
// Remove all hashtags that have no word after them
comment = comment.replaceAll("# ", "");
return comment;
}
这是非常冗长和丑陋的。所以我的问题是:
如何使用更好的正则表达式语句重写它以在一两行中删除字符串的所有这些部分?
此外,对您建议的正则表达式代码为何起作用的解释将帮助我更好地理解正则表达式在 Java 中的工作原理。