gpt4 book ai didi

java - 从文本提取中省略特殊字符

转载 作者:行者123 更新时间:2023-12-02 10:27:14 28 4
gpt4 key购买 nike

我有一个程序,可以从 PDF 文件中提取文本或单词,并将这些单词插入数据库中的表中。

在插入过程中,我有一个特殊的正则表达式来省略单词中存在的特殊字符。规则是,如果任何单词在单词前面或单词末尾有特殊字符,则会将其删除。

示例:

Text : `,test.`
Token : `test`
Text: ?good
Token : good
Text: ?,.
Token:
Text: www.stack.com
Token: www.stack.com

只要字符之间没有空格,特殊字符就会保留。至少我是这么定义的。

这是我定义要存储的单词的总体思路。但是,当涉及到某些单词(例如下划线)时:

Text: _
Token : Same as above

Text: _—,m‘—_
Token : same as above

它似乎没有将下划线视为特殊字符。

我的代码:

String lines[] = text.split("\\r?\\n");
for (String line : lines) {
String[] words = line.split(" ");

System.out.println("Line: " + line);



preparedStatement = con1.prepareStatement(sql);
int i=0;
for (String word : words) {

// check if one or more special characters at end of string then remove OR
// check special characters in beginning of the string then remove
// insert every word directly to table db
word = word.replaceAll("([\\W]+$)|(^[\\W]+)", "");
preparedStatement.setString(1, path1);
preparedStatement.setString(2, word);
System.out.println("Token: " +word);
preparedStatement.executeUpdate();
}


}

有没有办法正确忽略特殊字符或符号的所有可能组合?

最佳答案

\W 的定义是 [^a-zA-Z_0-9](参见 Java Pattern API)。

因此,要获得没有下划线的相同行为,请将\W 替换为 [^a-zA-Z0-9]

您的代码行将是:

word = word.replaceAll("([^a-zA-Z_0-9]+$)|(^[^a-zA-Z_0-9]+)", "");

关于java - 从文本提取中省略特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53861748/

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