我需要做一个方法,将检索词从文本没有任何东西(标点符号等),除了小写单词本身。
但是我用正则表达式模式挣扎了2个小时,遇到了这样一个问题。 课文中有“50年”这样的字眼。 使用我的正则表达式,输出将如下所示:
-年
而不是普通的
年份
但是我不能替换破折号“-”,因为还有另外一个连字符的单词应该留下。
下面是一个代码:
public List<String> retrieveWordsFromFile() {
List<String> wordsFromText = new ArrayList<>();
scanner.useDelimiter("\\n+|\\s+|'");
while (scanner.hasNext()) {
wordsFromText.add(scanner.next()
.toLowerCase()
.replaceAll("^s$", "is")
.replaceAll("[^\\p{Lower}\\-]", "")
);
}
wordsFromText.removeIf(word -> word.equals(""));
return wordsFromText;
}
所以我怎么能说我需要用只以字母/S开头的破折号替换除文本和单词以外的所有东西。 那么这个正则表达式字符串可能应该是这样一个“合并”成一个序列的?
使用regex,\\b[\\p{low}]+\\b
演示:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
// Test strings
String[] arr = { "Hello world", "Hello world 123", "HELLO world", "50-year" };
// Define regex pattern
Pattern pattern = Pattern.compile("\\b[\\p{Lower}]+\\b");
for (String s : arr) {
// The string to be matched
Matcher matcher = pattern.matcher(s);
while (matcher.find()) {
// Matched string
String matchedStr = matcher.group();
// Display the matched string
System.out.println(matchedStr);
}
}
}
}
输出:
world
world
world
year
正则表达式说明:
\b
种词界。+
指定一个或多个字符。我想知道如何使用正则表达式删除除所有图像标记之外的所有内容。 我已经试过了: (?s)^[^ (?s)^([^ 有谁知道如何将这 2 个组合为多个图像? 下面是我想应用它的内容示例: 我期望的结果应该是:
我正在尝试使用方法,只保留字母字符和。我试图用一个空字符串替换每个既不是字母也不是上述字符的字符。 到目前为止,我已经尝试过这样的东西(在不同的变体中),它正确地保留字母,但替换了我想要保留的特殊字符:
我对正则表达式很陌生,正在寻找一个匹配任何东西的表达式,除了所有匹配给定正则表达式的东西。我已经找到了除了特定字符串以外的任何东西的方法,但是我需要它不匹配一个正则表达式。它还必须在Java工作。 背景:我正在使用ANSI颜色的字符串。我想取一个字符串,它有一些文本,可能是用Ansi颜色代码格式化的,并删除除那些颜色代码以外的任何东西。这将给出附加到字符串上的任何字符的当前颜色格式。 格式化字符串
我有一个字符串包括电子邮件。在它之前和/或之后可能有额外的字符。输入示例:
问题内容: 我有这个字符串: 现在,我想在每个数字之前添加String num:。 因此结果必须是: 这也必须工作: 用于搜索数字的正则表达式是:[0-9]+ 但是我想用num:+ [匹配的子字符串]替换匹配的子字符串。 我现在写了一个带有数字的示例,但另一个示例可以是:在每个电子邮件地址之前添加 ·Email found·: 问题答案: 利用分组。您可以使用括号(并)定义组,并通过组索引$n在哪
问题内容: 我有这个HTML: 我只需要匹配任何HTML标记之外的单词。我的意思是,如果我想匹配“简单”和“文本”,则只能从“这是简单的html文本”和最后一部分“文本”中获得结果- 结果将是“简单” 1匹配,“文本” 2火柴。有人可以帮我吗?我正在使用jQuery。 是我要匹配的单词(在这种情况下为“简单”) 是 我需要用来包装所有选定的单词(在此示例中为“简单”)。但是我只想包装 任何 HTM
问题内容: 我正在使用Python,并且想在遇到句号(句号)或空格之前匹配所有单词。 目前,我正在使用: 上面的代码不匹配任何内容。我需要作为我的输出。 问题答案: 如果您只是从字符串中获取子集,我不明白为什么要使用正则表达式。 运作方式相同: 例: 正则表达式速度慢,设计笨拙且难以调试。肯定有occassions使用它,但如果你只是要提取的文本和,然后我不认为是这些场合之一。 参见:https