Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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 - Fatal编程技术网

Java 如何利用正则表达式提取关键字前后的句子数 我的段落:你好。这是第一段。还有一句话。这个句子包含一个可以匹配的关键字。我需要记下这句话。还有这句话。这一项不包括在内。 我的搜索关键字:关键字 预期结果:这是开始。还有一句话。这个句子包含一个可以匹配的关键字。我需要记下这句话。还有这句话

Java 如何利用正则表达式提取关键字前后的句子数 我的段落:你好。这是第一段。还有一句话。这个句子包含一个可以匹配的关键字。我需要记下这句话。还有这句话。这一项不包括在内。 我的搜索关键字:关键字 预期结果:这是开始。还有一句话。这个句子包含一个可以匹配的关键字。我需要记下这句话。还有这句话,java,regex,Java,Regex,我想得到段落中关键字前后的一些句子(还包括包含关键字的句子)。 在上面的示例中,句子数是2,如果没有足够的句子,则返回它可以得到的最大值(1或0) 我尝试使用此模式([^.]+\.[^.]*“+”关键字“+”[^.]*\.[^.]+)”获得带点的句子,但我无法控制句子的数量。有什么方法可以实现这一点吗?你真的非常接近!首先,你真的不需要初始句点,否则它将避免匹配段落中的第一句话(不管是否应该根据句子数量进行匹配) 为了回答你的主要问题,简单地改变[^.]*\.的数量对我来说非常有用。要在正则表达

我想得到段落中关键字前后的一些句子(还包括包含关键字的句子)。 在上面的示例中,句子数是2,如果没有足够的句子,则返回它可以得到的最大值(1或0)


我尝试使用此模式([^.]+\.[^.]*“+”关键字“+”[^.]*\.[^.]+)”获得带点的句子,但我无法控制句子的数量。
有什么方法可以实现这一点吗?

你真的非常接近!首先,你真的不需要初始句点,否则它将避免匹配段落中的第一句话(不管是否应该根据句子数量进行匹配)

为了回答你的主要问题,简单地改变[^.]*\.的数量对我来说非常有用。要在正则表达式中轻松做到这一点,你可以使用语法为
(group){number}
(group){min,max}
的[量词]来匹配前一个组特定的次数。将其添加到初始正则表达式中:
”(([^.]*\){2}[^.]*“+”关键字“+”[^.]*\([^.]*\){3})”
用于2之前、3之后或
([^.]*\){“+before+”}[^.]*“+”关键字“+”[^.]*\”([^.]*\){“+before+”}.
用于可编程版本。

我认为这种模式是
“\\?([^.]+\.[^.]*){0,2}”+“关键字[^.]*\.*\.++”{"
可以解决你的问题。

你能在关键字上拆分,然后计算每个块中的句子分隔符吗?你是对的,我的答案是错误的。我误解了这个问题,但那不是你的错。问题很清楚。因此,我删除了我的答案。如果我能解决它,我会这样做,但我需要几个小时才能参加事实上,我确实有一个问题:关键字能否在文本中出现多次?如果是,当它出现多次时将返回什么?@CarySwoveland是的,它可以出现多次,但我只需要关注第一个匹配项&忽略restGood答案。两个小的建议更改:1)您不需要将匹配项放入捕获组,因为感兴趣的只是匹配项本身。2)您将其他两个捕获组用作非捕获组。这很好,但读者可能会认为您稍后使用了捕获组来引用其内容,结果发现情况并非如此,如果它们是非捕获组,则不会发生这种情况。因此,我建议
(?:[^.]*\){2}[^.]*关键字[^.]*\(?:[^.]*\){3}
。我还建议您始终链接到在线正则表达式测试仪。