我有一个字符串,它是 String
和 Regex
的组合。我想拆分给定的字符串并将其存储到 Array
中,但不想拆分正则表达式术语。正则表达式可以出现在字符串中的任何位置。 /
表示正则表达式模式的开始和结束。
示例:
Hello World /[0-9]{4}[ K][a-z]{2}/
/^[a-z]{5,10}/ session
开始/[A-Z]) ^[0-9]{3}/准备
这就是我现在所拥有的
private static final Pattern ignoreSpaceInRegex =
Pattern.compile("\\s+", Pattern.UNICODE_CHARACTER_CLASS);
public static String[] getEachWord(String givenString) {
return ignoreSpaceInRegex.split(givenString);
}
最佳答案
您可以将任务切换为使用正则表达式,而不是 Pattern.split()
,它会查找字符串中的所有单词。因此你可以使用这个正则表达式:
/[^/]+?/|\S+
这匹配正则表达式(假设它以 /
开头和结尾)或单词(没有空格)。完整的方法如下:
private static final Pattern FIND_WORDS_PATTERN =
Pattern.compile("/[^/]+/|\\S+", Pattern.UNICODE_CHARACTER_CLASS);
public static List<String> getEachWord(String givenString) {
List<String> words = new ArrayList<>();
Matcher m = FIND_WORDS_PATTERN.matcher(givenString);
while (m.find()) {
words.add(m.group());
}
return words;
}
您的示例的结果如下:
Hello World /[0-9]{4}[ K][a-z]{2}/
:["Hello", "world", "/[0-9]{4}[ K][a-z]{2}/"]
/^[a-z]{5,10}/ session
:["/^[a-z]{5,10}/", "meetings"]
开始/[A-Z]) ^[0-9]{3}/准备
:["Start", "/[A-Z]) ^[0-9]{3}/", "prepration"]
关于java - 忽略正则表达式术语的拆分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56788716/