Java 用于在方括号中保留 ngram 的正则表达式
Java regex to preserve ngrams in square brackets
我是 Java 正则表达式的新手,所以我想知道是否有人可以在我需要正则表达式以根据 ngram 拆分文本的地方提供帮助。所以如果我有这样的文字:
dyson [salisbury matheson beaumont] clarke [carstairs morden] vaughan
到 return 以下 ngram:
Unigram: dyson
Trigram: salisbury matheson beaumont
Unigram: clarke
Bigram: carstairs morden
Unigram: vaughan
方括号中的内容是保留为双字母还是三字母?
拆分将基于括号外的空格。
这很简单:
\w+|\[([\w\s]+)\]
解释:
\w+
匹配一个词(一系列字母数字字符或下划线)
- 或:
\[([\w\s]+)\]
\[
匹配 [
[\w\s]+
匹配一系列的单词和空格,这个被捕获了
\]
匹配 ]
如果你有一个捕获,就意味着你有括号里的东西,否则就意味着你只有一个词。然后,您可以将简单的 \w+
正则表达式应用于括号的内容以提取单词。
要在 Java 中使用它,您必须转义反斜杠以将它们按原样传递给正则表达式引擎:
String pattern = "\w+|\[([\w\s]+)\]";
我是 Java 正则表达式的新手,所以我想知道是否有人可以在我需要正则表达式以根据 ngram 拆分文本的地方提供帮助。所以如果我有这样的文字:
dyson [salisbury matheson beaumont] clarke [carstairs morden] vaughan
到 return 以下 ngram:
Unigram: dyson
Trigram: salisbury matheson beaumont
Unigram: clarke
Bigram: carstairs morden
Unigram: vaughan
方括号中的内容是保留为双字母还是三字母?
拆分将基于括号外的空格。
这很简单:
\w+|\[([\w\s]+)\]
解释:
\w+
匹配一个词(一系列字母数字字符或下划线)- 或:
\[([\w\s]+)\]
\[
匹配[
[\w\s]+
匹配一系列的单词和空格,这个被捕获了\]
匹配]
如果你有一个捕获,就意味着你有括号里的东西,否则就意味着你只有一个词。然后,您可以将简单的 \w+
正则表达式应用于括号的内容以提取单词。
要在 Java 中使用它,您必须转义反斜杠以将它们按原样传递给正则表达式引擎:
String pattern = "\w+|\[([\w\s]+)\]";