RegEx查询只返回一个单词,而不是一个完整的句子
最好的答案
-
kayman 成员职位:662独角兽您在kentnisse周围使用group()正则表达式,因此这是正常的,因为您没有选择前缀或后缀,因此这是唯一返回的内容。如果你想要完整的句子,你需要在开头使用(),在结尾使用()。5
-
kayman 成员职位:662独角兽魔法可能被高估了一点但我确实找到了问题所在。
你要做的是一次提取多个句子,这并不完全支持。虽然操作符正确地提供了用正则表达式选择的内容,但它并不知道如何处理不匹配的部分,所以它只是保持原样,这实际上是正确的,但可能看起来很奇怪。操作符只会看到“啊,我的内容中有这个,所以我允许完整的东西”,它现在是这样构造的。
你可以用这个来获得第一个匹配,或者最后一个匹配,或者在匹配之间,但是你不能用它来说"我想要第一个和第5个句子"因为操作符不能那样做。正则表达式仿真器是一种常见的仿真器,所以替换的东西在这里欺骗了我们,因为没有替换。只是比赛…
一种解决方法是先按句子进行标记,然后再进行提取,但这相当繁重,所以更好的方法是使用负查找。因此,与其保留你需要的东西,不如去掉你不需要的东西。
你可以用负向前看,就像这样
(mi) ^ (? ! * kenntnisse)。*美元
然后什么都不做。这适用于数据操作符,文档操作符不支持无替换,所以它有点复杂。
我用这个逻辑简化了你的过程,所以实际上使用替换而不是提取,乍一看,它似乎也起作用了。如果浏览器允许,我会附上这个,希望这能让你走得更远。您可以直接导入附带的rmp进程。
(顺便说一句,也许最好再次删除XML,似乎浏览器一旦获得一定大小就很难处理它…)
5
答案
在我提出更多的问题之前,我尝试了更多的东西,并深入阅读了这个主题。
但是,我会回来的
所以看起来查询正在工作(?i)[^.\s]*Kenntnisse*[^\n]*
结果中只显示一个(第一个)匹配项,而在编辑器中显示4个匹配项。
我是不是又忘了什么?我以为这是通过“多线模式”实现的,但似乎没有什么区别。
(^。部分基本上意味着“除了实际的点或空格之外的任何东西”,所以它可能不会给你你需要的结果,这可能是你只得到第一个匹配和多行不起作用的原因
试着这样做:
(?我)^。* \ bkenntnisse \ b。*美元
\b表示单词边界,所以除了字符之外的所有内容,因此上面的声明“如果单词kennetnisse位于开始(^)和结束($)之间,无论使用何种大小写,都要匹配……”
多行模式将允许你逐行使用这个,所以你可能甚至不需要^和$字符,因为这被认为是默认的,但它从来没有伤害…
如果你想关注多个单词,你可以使用以下方法
(?我)^ . * \ b (?: kenntnisse | other_word | something_else) \ b。*美元
(?: XXX)允许你分组,但不“存储”这个
Lindon合资企业
乐鱼体育官方app来自认证RapidMiner专家的数据科学咨询
@TobiTee谢谢你的安排。如果你不介意的话,你也可以把excel发给我(你可以用我的pm,或者把它作为附件添加到这里)。然后我可以重建整个流程
但是在运行这个过程之后,我只收到了第一个匹配。
我希望@kaymanGot有一些神奇的建议。否则还有蟒蛇…