目前我有:text.split("[^\\w ]"
但我還需要包含以下詞:Can't但不是:'HEART'
我找不到將文本拆分為單詞的解決方案,包括字母、數字和撇號(如果它位于其他字母之間)。謝謝
uj5u.com熱心網友回復:
如果您想使用 匹配單詞\w,而不是使用 split 您可以使用單詞邊界并'在左側和右側斷言 not。
\b(?<!')\w (?:'\w )*\b(?!')
在 Java 中
String regex = "\\b(?<!')\\w (?:'\\w )*\\b(?!')";
String string = "Can't but not something like: 'HEART'";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println(matcher.group(0));
}
輸出
Can't
but
not
something
like
uj5u.com熱心網友回復:
當單引號/撇號出現在單詞之前/之后時,洗掉它們可能更簡單,然后使用帶有排除撇號的初始分隔符模式進行拆分:
String text = "Modern Talking's Hit: 'You're my heart, you're my soul', 1985";
String[] words = text.replaceAll("(?:^|\\W)'|'(?:\\W|$)", "").split("[^\\w^'] ");
System.out.println(Arrays.toString(words));
輸出:
[Modern, Talking's, Hit, You're, my, heart, you're, my, soul, 1985]
uj5u.com熱心網友回復:
Pattern您可以使用和MatchResult庫來列出您想要使用\w ('\w )?正則運算式的單詞,而不是拆分
import java.util.regex.Pattern;
import java.util.regex.MatchResult;
String regex = "\\w ('\\w )?";
String text = "sampl'e 'text'";
String[] words = Pattern.compile(regex)
.matcher(text)
.results()
.map(MatchResult::group)
.toArray(String[]::new);
您也可以拆分為由撇號包圍(或不包圍)的空格
text.split("'?\s'?");
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/410753.html
標籤:
