如何捕获字符串行中的单词

时间:2014-06-27 02:04:35

标签: regex

我试图使用正则表达式从字符串行捕获正确的单词(即不需要点,逗号,括号等...)。例如,如果输入行是:

So she was considering in her own mind (as well as she could),

我想捕获:

So 
she 
was 
considering 
in
....

有人知道这样做的方法吗?不幸的是,我是regex的新手:S

干杯!

1 个答案:

答案 0 :(得分:2)

这是你需要的正则表达式:

\b[a-zA-Z]+\b

See demo

<强>解释

  • \b是一个字边界,匹配一边是字母的位置,另一边不是字母(例如空格字符或字符串的开头)
  • 字符类[a-zA-Z]匹配范围a-zA-Z
  • 中的一个字符
  • +量词表示我们必须匹配前一次或多次
  • \b边界确保我们的字完成。这两个边界共同确保我们有一个完整的词。

在Java中

在评论中,您提到您要查看列表。你可以用这个:

List<String> matchList = new ArrayList<String>();
Pattern regex = Pattern.compile("\\b[a-z]+\\b", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
    matchList.add(regexMatcher.group());
    } 

请注意,我对模式不区分大小写。