我是一个Java regex的新手,所以我想知道是否有人能帮我解决我需要一个正则表达式来根据ngram拆分文本的问题。所以如果我有这样的短信:
dyson [salisbury matheson beaumont] clarke [carstairs morden] vaughan
若要返回下列纳克,请执行以下操作:
Unigram: dyson Trigram: salisbury matheson beaumont Unigram: clarke Bigram: carstairs morden Unigram: vaughan
方括号的内容被保留为双格还是三格?
分割将基于括号外的空格。
发布于 2015-03-06 17:19:59
这很简单:
\w+|\[([\w\s]+)\]解释:
\w+匹配一个单词(一系列字母数字字符或下划线)\[([\w\s]+)\] \[与[匹配[\w\s]+匹配一系列单词和空格,这将被捕获。\]与]匹配
如果你有一个捕获,它意味着你在括号中有一些东西,否则它意味着你只有一个单词。然后,可以将简单的\w+正则表达式应用于括号的内容,以提取单词。
要在Java中使用它,必须转义反斜杠才能将它们传递给regex引擎:
String pattern = "\\w+|\\[([\\w\\s]+)\\]";https://stackoverflow.com/questions/28903953
复制相似问题