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

Java-正则表达式以最小大小和分隔符拆分令牌

Java-正则表达式以最小大小和分隔符拆分令牌,java,regex,split,delimiter,Java,Regex,Split,Delimiter,我知道我知道,有很多类似的问题,我可以说我读了所有的问题。但是,我对正则表达式不太在行,我无法找到我需要的正则表达式 我想在Java中拆分一个字符串,我有4个约束: 分隔符是句子的[.?!]结尾 十进制数字不应该被标记化 不应删除分隔符。 每个令牌的最小大小应为5 例如,对于输入: 你好,世界!这个答案价值1.45美元。多谢各位 输出将是: [你好,世界!这个答案价值1.45美元,谢谢。] 到目前为止,我通过这个正则表达式得到了三个第一约束的答案: text.split("(?<=[.!?

我知道我知道,有很多类似的问题,我可以说我读了所有的问题。但是,我对正则表达式不太在行,我无法找到我需要的正则表达式

我想在Java中拆分一个字符串,我有4个约束:

分隔符是句子的[.?!]结尾 十进制数字不应该被标记化 不应删除分隔符。 每个令牌的最小大小应为5 例如,对于输入:

你好,世界!这个答案价值1.45美元。多谢各位

输出将是:

[你好,世界!这个答案价值1.45美元,谢谢。]

到目前为止,我通过这个正则表达式得到了三个第一约束的答案:

text.split("(?<=[.!?])(?<!\\d)(?!\\d)");
我知道我应该在正则表达式的某个地方使用{5,},但是我尝试的任何组合都不起作用

比如:我爱美国,你呢?不管它给我一句或两句话,只要它不把S.标记为一个单独的句子

最后,欢迎您介绍一个好的正则表达式教程

更新:正如评论中提到的,几乎不可能解决这样的问题,用正则表达式覆盖自然语言中发生的所有情况。然而,我在壁橱里找到了哈姆扎的答案,也是最有用的答案


所以,小心点!接受的答案不会涵盖所有可能的用例

下一个正则表达式呢

(?<=[.!?])(?!\w{1,5})(?<!\d)(?!\d)
e、 g


下一个正则表达式呢

(?<=[.!?])(?!\w{1,5})(?<!\d)(?!\d)
e、 g

我的答案是根据一个例子。 正则表达式基本上是基于我的答案。
正则表达式基本上是?我们确定每个句子的末尾都有一个空格吗?如果句子短于5个字符,会发生什么,例如,嘿@朱托:可以。本例中有空格,但并非所有情况下都有空格。这看起来非常接近自然语言解析,因为自然语言解析不是正则表达式的应用程序。记住,正则表达式可以解析正则语言。书面英语不是一种常规语言。使用正则表达式得到的任何解决方案都是粗糙的。@AfshinMoazami您使用的是不区分大小写的标志吗?在表达式的开头加上?i?=?我们确定每个句子的结尾都有空格吗?如果句子短于5个字符,会发生什么情况,例如,嘿@朱托:可以。本例中有空格,但并非所有情况下都有空格。这看起来非常接近自然语言解析,因为自然语言解析不是正则表达式的应用程序。记住,正则表达式可以解析正则语言。书面英语不是一种常规语言。使用正则表达式得到的任何解决方案都是粗糙的。@AfshinMoazami您使用的是不区分大小写的标志吗?在表达式的开头加上?i?=?从技术上讲,这是正确的答案,但我更喜欢哈姆扎的答案,它不会将美元和美元分开。感谢佛陀,从技术上讲,这是正确的答案,但我更喜欢哈姆扎的答案,这不会把美元和美元分开谢谢Buddy如果缩写词在句末,这就失败了,例如,我住在美国,我们说英语。此外,它仍然只对一部分的缩写进行拆分,例如Grammar Inc.的员工在互联网上发表迂腐的评论。这两个问题基本上都无法用正则表达式解决。@ChrisBode是的,我知道。如果缩写词实际上在句子的末尾,这就失败了,例如,我住在美国,我们说英语。此外,它仍然只对一部分的缩写进行拆分,例如Grammar Inc.的员工在互联网上发表迂腐的评论。这两个问题本质上都无法用正则表达式解决。@ChrisBode是的,我知道。