gpt4 book ai didi

java - TokensRegex 中正则表达式的开始/结束

转载 作者:行者123 更新时间:2023-11-30 07:04:42 26 4
gpt4 key购买 nike

假设我有以下代码:

TokenSequencePattern p = TokenSequencePattern.compile("[{tag:/JJ.*/}] [{tag:/NN.*/}]");
TokenSequenceMatcher m = tPattern.getMatcher(coreLabelList);
while (tMatcher.find()){
List<CoreMap> matches = m.groupNodes();
}

我想在这里捕获的是一个形容词,后面跟着一个名词,即它必须以一个形容词开头,必须以一个名词结尾。例如,如果我有“美丽的围巾”,那么它应该是一个匹配项,但如果我有“带有白点的漂亮围巾”,它就不应该是一个匹配项。目前,上面的标记正则表达式与这两个短语都匹配。如何指定序列的准确开始和准确结束?

最佳答案

您可以使用

TokenSequencePattern p = TokenSequencePattern.compile("[tag:/JJ.*/] [tag:/NN.*/]");

使用A round ball is populate very high in the blue sky.进行测试,得到round ballblue sky子字符串。

要仅获得整个字符串匹配,如果您想使用Matcher#find()(带有 Matcher#matches(), anchor 是隐含的)。

因此,要仅将 round ball 字符串匹配为形容词和名词的组合,您可以使用

TokenSequencePattern p = TokenSequencePattern.compile("^[tag:/JJ.*/] [tag:/NN.*/]$");

TokenSequencePattern p = TokenSequencePattern.compile("\\A[tag:/JJ.*/] [tag:/NN.*/]\\z");

^/\A 代表字符串的开头(此外,\A 始终匹配字符串的开头) 和 $/\z 匹配字符串的末尾(请注意,\z 将始终匹配字符串的最末尾,而 $ - 即使您没有使用多行修饰符 - 允许在其后添加尾随换行符)。

注意: anchor 在 CoreNLP 3.7.0 上进行了测试。它们在某些版本上不起作用(例如,在 CoreNLP 3.5.1 上不起作用,它会抛出错误:第 1 行第 1 列出现词法错误。遇到:“^”(94),之后:“” )

关于java - TokensRegex 中正则表达式的开始/结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40343966/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com