Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java正则表达式,使用逗号分隔的值捕获组_Java_Regex_Csv_Capturing Group - Fatal编程技术网

Java正则表达式,使用逗号分隔的值捕获组

Java正则表达式,使用逗号分隔的值捕获组,java,regex,csv,capturing-group,Java,Regex,Csv,Capturing Group,输入字符串:士兵可能有瘀伤、伤口、伤痕、脱臼或其他伤害 预期输出: 瘀伤 伤口 标记 错位 损伤 尝试了通用模式: “[\s]?(\w+?)”+//擦伤。 “(?:(\s),(\s)(\w+?)*”+//伤口标记错位 “[\s]?(?:或|和)其他(\w+)”;//损伤 该模式应该能够匹配其他输入字符串,例如:士兵可能有瘀伤或其他伤害 尝试上述通用模式时,输出为: 瘀伤 错位 损伤 “(?:(\s)?,(\s)?(\w+?)*”的捕获组有问题。捕获组还有一次出现。。但它只返回“错位”。“痕迹”和

输入字符串:士兵可能有瘀伤、伤口、伤痕、脱臼或其他伤害

预期输出
瘀伤
伤口
标记
错位
损伤

尝试了通用模式
“[\s]?(\w+?)”+//擦伤。 “(?:(\s),(\s)(\w+?)*”+//伤口标记错位 “[\s]?(?:或|和)其他(\w+)”;//损伤

该模式应该能够匹配其他输入字符串,例如:士兵可能有瘀伤或其他伤害

尝试上述通用模式时,输出为: 瘀伤 错位 损伤

“(?:(\s)?,(\s)?(\w+?)*”的捕获组有问题。捕获组还有一次出现。。但它只返回“错位”。“痕迹”和“错位:被吞噬

你能告诉我正确的模式是什么吗?错误在哪里? 这个问题最接近这个问题,但这个解决方案没有帮助

谢谢。

中的Regex不适合(自然)语言处理。使用Regex,您只能匹配定义良好的模式。您应该真正放弃使用Regex进行此操作的想法

您可能想开始一个新的问题,在这里您可以指定执行此任务所使用的编程语言,并在那里请求指针

编辑

发布了一个指向第三方库的有希望的链接,该库能够执行许多语言处理任务。它是用Java编写的。我自己没有使用过它,但从从事该库工作的人员/机构来看,它似乎非常可靠。

Regex in not sugged for(natural)语言处理。使用正则表达式,你只能匹配定义良好的模式。你应该真的,真的放弃使用正则表达式进行匹配的想法

您可能想开始一个新的问题,在这里您可以指定执行此任务所使用的编程语言,并在那里请求指针

编辑


发布了一个指向第三方库的有希望的链接,该库能够执行许多语言处理任务。它是用Java编写的。我自己没有使用过它,但从从事该库工作的人员/机构来看,它似乎非常可靠。

有效的模式是:\w+(?:\s*,\s*\w+),然后手动分离CSV 对于Java正则表达式,没有其他方法可以做到这一点

理想情况下,Java正则表达式不适合NLP

多亏了Bart K.和PSpeed.

有效的模式是:\w+(?:\s*,\s*\w+),然后手动分离CSV 对于Java正则表达式,没有其他方法可以做到这一点

理想情况下,Java正则表达式不适合NLP

感谢Bart K.和PSpeed。

当捕获组用量词[ie:(foo)*]注释时然后你只会得到最后一个匹配项。如果你想得到所有匹配项,那么你需要在捕获中量化,然后你将不得不手动解析出值。作为regex的忠实粉丝,我认为出于各种原因,在这里不合适……即使你最终没有做NLP

如何修复:(?:(\s)?,(\s)?(\w+?)*


在这种情况下,量词基本上覆盖了整个正则表达式,您也可以使用Matcher.find()来逐步完成每个匹配。另外,我很好奇为什么您要为空格设置捕获组。如果您只想找到一组逗号分隔的单词,则类似于:\w+(?:\s*,\s*\w+)*那就别再纠结于抓捕小组了,就把整个比赛分成两半吧


对于任何更复杂的re:NLP,GATE都是一个非常强大的工具。学习曲线有时很陡峭,但你可以从整个行业的科学人员中学习:

当捕获组用量词注释时[ie:(foo)*]然后你只会得到最后一个匹配项。如果你想得到所有匹配项,那么你需要在捕获中量化,然后你将不得不手动解析出值。作为regex的忠实粉丝,我认为出于各种原因,在这里不合适……即使你最终没有做NLP

如何修复:(?:(\s)?,(\s)?(\w+?)*


在这种情况下,量词基本上覆盖了整个正则表达式,您也可以使用Matcher.find()来逐步完成每个匹配。另外,我很好奇为什么您要为空格设置捕获组。如果您只想找到一组逗号分隔的单词,则类似于:\w+(?:\s*,\s*\w+)*那就别再纠结于抓捕小组了,就把整个比赛分成两半吧


对于任何更复杂的问题,比如NLP,GATE是一个非常强大的工具。学习曲线有时是陡峭的,但你可以从整个行业的科学家中得出结论:

是什么让单词
擦伤
伤口
标记
错位
受伤
与其他单词不同?T前四个单词前后都有一个逗号,但我看不出
伤害
如何与图片相吻合。我正在尝试执行以下任务以实现模式来提取关系:NP{,NP}*{,}其他NP擦伤,伤口,脱臼或其他伤害…下位词(“擦伤”,“伤害”),下位词(“受伤”,“受伤”),下位词(“脱臼”,“受伤”),因此,我们可以看到如何满足“受伤”匹配。当捕获组用量词注释时[ie:(foo)*]然后你只会得到最后一个匹配项。如果你想得到所有匹配项,那么你需要在捕获中量化,然后你将不得不手动解析出值。作为regex的忠实粉丝,我认为这在这里并不合适,因为有很多原因……即使你最终没有做NLP。谢谢@PSpeed:你说得对,th这就是原因。虽然不合适,但有一个 ".[\s]?(\w+?)"+ // bruises. "(?:(\s)?,(\s)?(\w+?))*"+ // wounds marks dislocations "[\s]?(?:or|and) other (\w+)."; // Injuries