Regex 如何仅捕获字符串行中的单词
我试图使用正则表达式从字符串行中仅捕获正确的单词(即不需要点、逗号、括号等)。例如,如果输入行为:Regex 如何仅捕获字符串行中的单词,regex,Regex,我试图使用正则表达式从字符串行中仅捕获正确的单词(即不需要点、逗号、括号等)。例如,如果输入行为: So she was considering in her own mind (as well as she could), 我想捕捉: So she was considering in .... 有人知道怎么做吗?不幸的是,我不熟悉正则表达式 干杯 这是您需要的正则表达式: \b[a-zA-Z]+\b 解释 \b是一个单词边界,它匹配一个位置,其中一边是字母,另一边不是字母(
So she was considering in her own mind (as well as she could),
我想捕捉:
So
she
was
considering
in
....
有人知道怎么做吗?不幸的是,我不熟悉正则表达式
干杯 这是您需要的正则表达式:
\b[a-zA-Z]+\b
解释
是一个单词边界,它匹配一个位置,其中一边是字母,另一边不是字母(例如空格字符或字符串的开头)\b
- 字符类
匹配范围[a-zA-Z]
和a-Z
a-Z
量词表示我们必须匹配前面的一次或多次+
边界确保我们的话结束了。这两个边界确保我们有一个完整的单词\b
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());
}
List matchList=new ArrayList();
Pattern regex=Pattern.compile(“\\b[a-z]+\\b”,Pattern.CASE不区分大小写| Pattern.UNICODE_大小写);
Matcher regexMatcher=regex.Matcher(subjectString);
while(regexMatcher.find()){
add(regexMatcher.group());
}
注意,我使模式不区分大小写。太好了!它确实有效。。。有一个问题,如果我想把所有的单词都列成一个单子怎么办。我的意思是,我确实希望避免使用括号、逗号等。。。但是我想把这些词分开。在上下文中,我使用java的split方法,所以我想打印出组成一行的所有单词。干杯我添加了Java代码,这样您就可以得到一个列表。让我知道它是否对你方有效。:)行分割(/(?:[^a-zA-Z]|\s)+/)不起作用吗?只需反转匹配:“查找但不保留非字母或空格字符的非零数量”。必须确保Java非捕获与Perl相同。@JoeMcMahon嘿,你试图对我的答案进行的大量编辑是怎么回事?做同样的事情总有100种方法。是的,配对和分割是同一枚硬币的两面。nelt22开始询问一份清单,我就是这样回答的。你完全可以自由地以不同的方式展示,如果可行的话,我会投赞成票(请提供演示),因为我总是喜欢看到其他答案。:)谢谢,下次见!:)