如何删除阿拉伯语主题标签?

how to remove Arabic hashtags?

我正在使用 Twitter4j 从 Twitter 中轮询推文 从中获取文本后,我试图从中过滤主题标签 我现在把它变成字符串 我有这个String: "892698363371638784:RT @hikids_ksa: 游戏很危险,有脑子,有思维,有技巧 在#Hi_Kids_online 商店有售.."

我想删除 HiKids_online_store,因为它后面有标签 java

我的代码无法处理此输入的问题: "@kaskasomar 这是无脑的,就像其他人背叛黎巴嫩人民并指责他们恐怖主义一样,但因为他们的意见与其他人的意见不同#荒谬"

愚蠢的部分由于某种原因没有被删除 这是我的方法

static String removeHashtags(String in)
{
    in = in.replaceAll("#[A-Za-z]+","");//remove English hashtags
    in = in.replaceAll("[أ-ي]#+","");//remove Arabic hashtags that have # before it
    return in = in.replaceAll("#[أ-ي]+","");//remove Arabic hashtags that have # after it
}

问题是,在第二行中,+ 应用于主题标签,而不是阿拉伯字符。固定版本:

in = in.replaceAll("[أ-ي]+#","");

如果您只是想删除任何语言的所有井号标签,您可以写

in = in.replaceAll("#\p{IsAlphabetic}+", "");

如果你特别想删除阿拉伯哈希标签,你可以写

in = in.replaceAll("#\p{IsArabic}+", "");

因此您不必担心构建包含从左到右和从右到左部分的正则表达式。这提高了代码的可读性。

下面的代码使用 Unicode

删除了混有英文字符的阿拉伯语主题标签和 [0-9]
import re
text = "#مرحبا"
reg = r"#[0-9\u0621-\u063A\u0640-\u066C\u0671-\u0674a-zA-Z_]+"
text = re.sub(reg, " ", text)

示例:regexr.com/691cn