java获取从字符串中单词_R使用模式匹配从字符串中提取单词

这是一种 stringr 方法 . 正则表达式匹配 AA 前面有空格或字符串 (?<=^| ) 的开头,然后匹配尽可能少的字符 .*? 直到下一个空格或字符串 (?=$| ) 的结尾 . 请注意,您可以将所有字符串组合到一个向量中,并返回一个向量 . 如果你想要每个字符串的所有匹配项,那么使用 str_extract_all 而不是 str_extract ,你会得到一个包含每个字符串向量的列表 . 如果要指定多个匹配项,请使用选项和捕获组 (AA|BB) ,如图所示 .

mytext

as.character("HORSE MONKEY LIZARD AA12345 SWORDFISH"), # Return AA12345

as.character("ELEPHANT AA100 KOALA POLAR.BEAR"), # Want to return AA100,

as.character("AA3273 ELEPHANT KOALA POLAR.BEAR"), # Want to return AA3273

as.character("ELEPHANT KOALA POLAR.BEAR AA5785"), # Want to return AA5785

as.character("ELEPHANT KOALA POLAR.BEAR"), # Want to return nothing

as.character("ELEPHANT AA12345 KOALA POLAR.BEAR AA5785") # Can return only AA12345 or both

)

library(stringr)

mytext %>% str_extract("(?<=^| )AA.*?(?=$| )")

#> [1] "AA12345" "AA100" "AA3273" "AA5785" NA "AA12345"

mytext %>% str_extract_all("(?<=^| )AA.*?(?=$| )")

#> [[1]]

#> [1] "AA12345"

#>

#> [[2]]

#> [1] "AA100"

#>

#> [[3]]

#> [1] "AA3273"

#>

#> [[4]]

#> [1] "AA5785"

#>

#> [[5]]

#> character(0)

#>

#> [[6]]

#> [1] "AA12345" "AA5785"

as.character("TULIP AA999 DAISY BB123") %>% str_extract_all("(?<=^| )(AA|BB).*?(?=$| )")

#> [[1]]

#> [1] "AA999" "BB123"

由reprex package(v0.2.0)于2018-04-29创建 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用正则表达式来匹配英文单词,然后将其保存在一个字符串数组。以下是代码示例: ```java import java.util.regex.Matcher; import java.util.regex.Pattern; public class WordExtractor { public static void main(String[] args) { String text = "This is a sample text with some words."; String[] words = extractWords(text); for (String word : words) { System.out.println(word); } } public static String[] extractWords(String text) { Pattern pattern = Pattern.compile("[a-zA-Z]+"); Matcher matcher = pattern.matcher(text); String[] words = new String[100]; int i = 0; while (matcher.find()) { words[i++] = matcher.group(); } return words; } } ``` 在上面的示例,我们使用正则表达式 `[a-zA-Z]+` 来匹配所有由字母组成的单词。然后使用 `Matcher` 类的 `find()` 方法来逐个匹配所有出现的单词,并将其保存在一个字符串数组。 ### 回答2: 要实现从一段英文文本提取出所有的英文单词并保存在一个字符串数组里,可以使用Java的正则表达式来实现。下面是一个简单的示例代码: ```java import java.util.regex.*; public class WordExtractor { public static void main(String[] args) { String text = "This is a sample text for word extraction."; // 使用正则表达式匹配英文单词,并保存在字符串数组 Pattern pattern = Pattern.compile("\\b[a-zA-Z]+\\b"); Matcher matcher = pattern.matcher(text); String[] words = new String[0]; while (matcher.find()) { words = addWord(words, matcher.group()); } // 输出所有提取到的英文单词 for (String word : words) { System.out.println(word); } } // 在字符串数组末尾添加一个单词,并返回新的数组 private static String[] addWord(String[] array, String word) { String[] newArray = new String[array.length + 1]; System.arraycopy(array, 0, newArray, 0, array.length); newArray[array.length] = word; return newArray; } } ``` 在上述代码,我们使用了正则表达式 `\b[a-zA-Z]+\b` 来匹配英文单词。其 `\b` 表示单词的边界,`[a-zA-Z]` 表示大小写字母,`+` 表示匹配一个或多个字母。 通过循环遍历 Matcher 对象的 find() 方法,我们可以找到所有匹配的英文单词并保存在字符串数组 words 。为了方便动态添加单词,我们使用了一个辅助方法 addWord(),每次在字符串数组末尾添加一个新的单词,并返回新的数组。 最后,我们使用一个简单的循环输出数组 words 的所有单词。运行这段代码,将输出文本的所有英文单词: ``` This is a sample text for word extraction ``` ### 回答3: 要实现从一段英文文本提取出所有的英文单词并保存在一个字符串数组里,可以使用Java的正则表达式和字符串处理方法来完成。下面是一个简单的示例代码: ```java import java.util.regex.Matcher; import java.util.regex.Pattern; public class WordExtractor { public static void main(String[] args) { String englishText = "I have a cat. It is cute."; // 使用正则表达式匹配英文单词 String regex = "\\b[A-Za-z]+\\b"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(englishText); // 将匹配到的英文单词保存在一个字符串数组里 int count = 0; String[] words = new String[100]; // 假设最多有100个英文单词 while (matcher.find()) { words[count++] = matcher.group(); } // 打印提取到的英文单词 for (int i = 0; i < count; i++) { System.out.println(words[i]); } } } ``` 以上代码首先定义了一个英文文本字符串 `englishText`,然后使用正则表达式 `\b[A-Za-z]+\b` 来匹配英文单词。其 `\b` 表示单词的边界,`[A-Za-z]+` 表示一个或多个大小写字母。然后使用 `Pattern` 类的 `compile()` 方法将正则表达式编译成模式,再使用 `Matcher` 类的 `find()` 方法进行匹配。 匹配到的英文单词通过 `matcher.group()` 方法获取,然后保存在一个字符串数组 `words` 。为了方便,这里假设最多有100个英文单词,可以根据实际情况调整数组大小。 最后,使用循环打印出提取到的英文单词。 请注意,以上示例代码只是一个简单的实现,可能无法处理一些特殊情况,比如连字符、缩写、带有标点符号的单词等。如果需要更严格的英文单词提取功能,可能需要更复杂的正则表达式或其他处理方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值