Java 正则表达式忽略不以字母开头的标记

Java 正则表达式忽略不以字母开头的标记,java,regex,string,token,Java,Regex,String,Token,如何编写忽略任何不以字母开头的标记的正则表达式?它应该在java中使用 示例:it's super-cool-->正则表达式应匹配:[it,super,cool]并忽略['s]您可以使用(?)这意味着字母前面没有标点符号。请注意,(?)用于指定。请查看的文档以了解更多信息 import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(

如何编写忽略任何不以字母开头的标记的正则表达式?它应该在java中使用

示例:
it's super-cool
-->正则表达式应匹配:
[it,super,cool]
并忽略
['s]
您可以使用
(?)这意味着字母前面没有标点符号。请注意,
(?)用于指定。请查看的文档以了解更多信息

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        String str = "it 's super cool";
        Pattern pattern = Pattern.compile("(?<!\\p{Punct})(\\p{L}+)");
        Matcher matcher = pattern.matcher(str);
        while (matcher.find()) {
            System.out.println(matcher.group());
        }
    }
}

可选正则表达式:

it
super
cool
"(?:^|\\s)([A-Za-z]+)"
public static void main(String[] args) {
    String input = "it 's super cool";

    Matcher matcher = Pattern.compile("(?:^|\\s)([A-Za-z]+)").matcher(input);

    while (matcher.find()) {
        String result = matcher.group(1);
        System.out.println(result);
    }
}
it
super
cool
上下文中的正则表达式:

it
super
cool
"(?:^|\\s)([A-Za-z]+)"
public static void main(String[] args) {
    String input = "it 's super cool";

    Matcher matcher = Pattern.compile("(?:^|\\s)([A-Za-z]+)").matcher(input);

    while (matcher.find()) {
        String result = matcher.group(1);
        System.out.println(result);
    }
}
it
super
cool
输出:

it
super
cool
"(?:^|\\s)([A-Za-z]+)"
public static void main(String[] args) {
    String input = "it 's super cool";

    Matcher matcher = Pattern.compile("(?:^|\\s)([A-Za-z]+)").matcher(input);

    while (matcher.find()) {
        String result = matcher.group(1);
        System.out.println(result);
    }
}
it
super
cool
注意:要匹配任何语言(如印地语、德语、汉语、英语等)中的字母字符,请使用以下正则表达式:

"(?:^|\\s)(\\p{L}+)"

有关类、
Pattern
以及Unicode脚本、块、类别和二进制属性的类的更多信息,可以找到。

这个答案可能不完整,这取决于“token”的含义。什么将一个标记与另一个标记区分开来?只有由字母组成的标记才会被识别为一个。标记“多普勒效应”只会产生“多普勒”并完全消除“效果”。
[A-Za-z]
仅适用于英文字母。为了覆盖所有类型的字母(例如印地语、德语、中文等),您应该使用
\\p{L}
在Java中。感谢您提供的信息!我不知道,因为我从未尝试过英语字母表之外的正则表达式。我将添加这些信息。谢谢Arvind!