[英]Splitting into sentences Java
我想将文本分成句子。 我的文字之间包含\\n
字符。 我希望在\\n
和处进行拆分.
(点)。 我不能将BreakIterator
用作拆分条件,因为它是一个空格后跟一个句点(在我要拆分的文本中,这不是必需的)。
范例 :
i am a java programmer.i like coding in java. pi is 3.14\n regex not working
应该输出:
['i am a java programmer', 'i like coding in java', 'pi is 3.14', 'regex not working']
我尝试了一个简单的正则表达式,它可以分割为\\n
或.
:
[\\\\n\\.]
尽管这不能正常工作,但单独指定是可行的。
\\\\n
\\.
因此,任何人都可以提供将\\n
或拆分的正则表达式.
?
另一个问题是我不希望在像5.6这样的小数的情况下进行拆分。
这个Java regex应该可以:
"\n|((?<!\\d)\\.(?!\\d))"
这里的要点:
\\n
此正则表达式说:“换行符或不带数字的前后文字点
仅供参考,除了括号本身,您无需对字符类中的字符进行转义(在[]之间)。
使用string.split("[\\n.]")
在\\n
或处拆分.
内部角色类, .
没有特别的意义。 因此,无需逃避.
编辑: string.split("\\n|[.](?<!\\\\d)(?!\\\\d)")
避免拆分小数。
在这里,每个.
向后看和向前看是否在两边都有数字。 如果两者都不是数字,则应用拆分。
\\n|\\\\.(?!\\\\d)|(?<!\\\\d)\\\\.
避免为拆分.
两边都有数字。
\\n|(?<!\\\\d)[.](?!\\\\d)
避免在任何边都有数字的情况下拆分
所以你需要的是
string.split("\n|\\.(?!\\d)|(?<!\\d)\\.")
这会分裂something.4
3.14
但不会分裂3.14
您无需在[]
块中的Java正则表达式中将内容进行两次转义:
[.\n]
应该管用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.