Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.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/19.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_Text Segmentation - Fatal编程技术网

用正则表达式在Java中匹配句子

用正则表达式在Java中匹配句子,java,regex,text-segmentation,Java,Regex,Text Segmentation,我使用java中的Scanner类来遍历文本文件并提取每个句子。我正在使用扫描仪上的setDelimiter方法对正则表达式执行以下操作: Pattern.compile("[\\w]*[\\.|?|!][\\s]") 这目前似乎有效,但在句子末尾留下了空白。是否有一种简单的方法来匹配结尾处的空白,但不将其包含在结果中 我意识到这可能是一个简单的问题,但我以前从未使用过regex,所以请轻松一点:)您想要的是积极的前瞻。这应该做到: Pattern.compile("\\w*[.?!](?=\

我使用java中的Scanner类来遍历文本文件并提取每个句子。我正在使用扫描仪上的setDelimiter方法对正则表达式执行以下操作:

Pattern.compile("[\\w]*[\\.|?|!][\\s]")
这目前似乎有效,但在句子末尾留下了空白。是否有一种简单的方法来匹配结尾处的空白,但不将其包含在结果中


我意识到这可能是一个简单的问题,但我以前从未使用过regex,所以请轻松一点:)

您想要的是积极的前瞻。这应该做到:

Pattern.compile("\\w*[.?!](?=\\s)")

你想要的是积极的前瞻。这应该做到:

Pattern.compile("\\w*[.?!](?=\\s)")
试试这个:

"(?<=[.!?])\\s+"
这将把
“ORLY!?!?LOL”
分为
“ORLY”
“LOL”

尝试以下操作:

"(?<=[.!?])\\s+"


这将把
“ORLY!?!?LOL”
分为
“ORLY”
“LOL”

谢谢您的帮助,但这似乎不起作用。。我最初的一个句子有两个句子(注意结尾的空格):“敏捷的棕色狐狸跳过了懒惰的人”“这是另一个将在测试中出现的句子”你的句子似乎有以下内容:“敏捷的棕色狐狸跳过了懒惰的人”“这是另一个将在测试中出现的句子”刚刚意识到最后一个单词也不见了,知道为什么吗?@WoLpH:这不应该是模式。编译(\\w*[.?!](?=\\s)”),因为字符类中的表达式的语义与普通的不同?确实是ig0774,我会改变它。@Gary:试试修订版。最初的正则表达式有一些缺陷感谢您的帮助,但这似乎不起作用。。我最初的一个句子有两个句子(注意结尾的空格):“敏捷的棕色狐狸跳过了懒惰的人”“这是另一个将在测试中出现的句子”你的句子似乎有以下内容:“敏捷的棕色狐狸跳过了懒惰的人”“这是另一个将在测试中出现的句子”刚刚意识到最后一个单词也不见了,知道为什么吗?@WoLpH:这不应该是模式。编译(\\w*[.?!](?=\\s)”),因为字符类中的表达式的语义与普通的不同?确实是ig0774,我会改变它。@Gary:试试修订版。最初的正则表达式有一些缺陷。它只匹配单词,但不停在句末。谢谢你的尝试@加里:对不起,现在修好了。再试一次。这将完成所有操作,但在结束时删除句点!有没有一种简单的方法可以用正则表达式删除句点,或者我应该在之后更改字符串?编辑:忘了说我也想忽略逗号,我应该在正则表达式中还是手动完成?忽略逗号是什么意思?现在这个正则表达式不把逗号当作句子分隔符。你想让它这样做吗?没关系,再进一步想一想:这可能不是这个正则表达式的工作。非常感谢您的帮助:)这只匹配单词,但不会在句末停止。谢谢你的尝试@加里:对不起,现在修好了。再试一次。这将完成所有操作,但在结束时删除句点!有没有一种简单的方法可以用正则表达式删除句点,或者我应该在之后更改字符串?编辑:忘了说我也想忽略逗号,我应该在正则表达式中还是手动完成?忽略逗号是什么意思?现在这个正则表达式不把逗号当作句子分隔符。你想让它这样做吗?没关系,再进一步想一想:这可能不是这个正则表达式的工作。非常感谢您的帮助:)