Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/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
Regex 什么是分隔句子但排除某些特定情况的正则表达式_Regex_Scala_Split - Fatal编程技术网

Regex 什么是分隔句子但排除某些特定情况的正则表达式

Regex 什么是分隔句子但排除某些特定情况的正则表达式,regex,scala,split,Regex,Scala,Split,我有一个文本,我需要在子内容中拆分,但如果文本包含特殊情况,如domain.com或st.moris,它也会在这些点上拆分 以下是我得到的: val pattern = "(?<=[.](?<![s][t][.]))" val text = "here is an axample with cases like st. moris and google.com here. second sentence." val list = text.sp

我有一个文本,我需要在子内容中拆分,但如果文本包含特殊情况,如domain.com或st.moris,它也会在这些点上拆分

以下是我得到的:

val pattern = "(?<=[.](?<![s][t][.]))"
val text = "here is an axample with cases like st. moris and google.com here. second sentence."
val list = text.split(pattern)
list.foreach(println)
但相反,它返回:

List(
    "here is an axample with cases like st.",
    " moris and google.",
    "com here.",
    "second sentence."
)

如何使其工作?

您的代码返回这样的值,因为正如您在模式中提到的,当您提到的符号出现时,您需要拆分。 你们提到的其中一个符号是。 所以在圣约翰之后。来了,它分裂了。
所以你有两个选择要么删除。在st和Google之后,或者在第二个单词之前的模式中给另一个符号并删除。来自模式。

您的代码返回这样的值,因为正如您在模式中提到的,当您提到的符号出现时,您需要拆分。 你们提到的其中一个符号是。 所以在圣约翰之后。来了,它分裂了。
所以你有两个选择要么删除。在st和Google之后,或者在第二个单词之前的模式中给另一个符号并删除。从模式中。

如果要拆分为1+个空格,前面有一个非自身的点,前面有st作为一个完整的单词,您可以使用

val pattern = """(?i)(?<=(?<!\bst)\.)\s+"""
请参阅和。详情:

?i-使模式不区分大小写 ?圣 \s+-1个或多个空格 或

?i-使模式不区分大小写 ?st和not紧跟在com或org之后,如有必要,可在后面添加更多替代词| \s*+-0个或多个空格按所有格匹配 ?!$ - 不是在字符串的末尾。 见:


如果要拆分为1+个空格,前面有一个点,而不是它本身,前面有st作为一个完整的单词,则可以使用

val pattern = """(?i)(?<=(?<!\bst)\.)\s+"""
请参阅和。详情:

?i-使模式不区分大小写 ?圣 \s+-1个或多个空格 或

?i-使模式不区分大小写 ?st和not紧跟在com或org之后,如有必要,可在后面添加更多替代词| \s*+-0个或多个空格按所有格匹配 ?!$ - 不是在字符串的末尾。 见:


所以这一条对我很有效,可以在文本中用不同的排除来扩展

.+st\.;mr\.\124; mrs\..+?\|$

组中可能会有一些子匹配项,但您应该只查找完整匹配项。下面是regex101.com示例

如右图所示,只有两个匹配项

要添加更多的排除,您应该添加到st\.| mr\.| mrs\。要将其计为排除项的部分字符串模式

此部分排除了域名:\.\$。它说,句子的结尾应该是一个点和一个空格,或者是一行的结尾


如果它在您的环境中有效,请回复。

所以这一条对我有效,并且可以在文本中使用不同的排除项进行扩展

.+st\.;mr\.\124; mrs\..+?\|$

组中可能会有一些子匹配项,但您应该只查找完整匹配项。下面是regex101.com示例

如右图所示,只有两个匹配项

要添加更多的排除,您应该添加到st\.| mr\.| mrs\。要将其计为排除项的部分字符串模式

此部分排除了域名:\.\$。它说,句子的结尾应该是一个点和一个空格,或者是一行的结尾



如果它在您的环境中起作用,请回复。

尝试:?谢谢,但它不起作用可能是使用\s而不是\h。看到它在这里工作了吗:它适用于我val pattern=?实际上,该模式在regex工具上工作,但scala代码没有拆分字符串…请尝试:?谢谢,但它不工作可能是使用\s而不是\h。看到它在这里工作了吗:它适用于我val pattern=?实际上,该模式在regex工具上工作,但是scala代码没有拆分字符串…您能提供一个代码示例吗?显然,我无法更改文本,它来自外部来源。我唯一能控制的是regex模式。你可以在模式中包括st.and.com是的,怎么做?这是我的问题。我知道我需要在正则表达式中包含它们,但我所有的尝试都导致了错误的结果。您能告诉我如何将它们包含在正则表达式中,以便代码能够正确执行吗?您能提供一个代码示例吗?显然,我无法更改文本,它来自外部来源。我唯一能控制的是regex模式。你可以在模式中包括st.and.com是的,怎么做?这是我的问题。我知道我需要在正则表达式中包含它们,但我所有的尝试都导致了错误的结果。你能告诉我如何在正则表达式中包含它们,这样代码就能正确执行吗?太好了!这就是我需要的。谢谢Wiktorn我们现在可以不区分大小写吗?那么这对圣和圣有用吗?用iYep,你太棒了,长官@可能是菲拉斯,你想要吗?太好了!这就是我需要的。谢谢Wiktorn我们现在可以不区分大小写吗?那么这对圣和圣有用吗?用iYep,你太棒了,长官@Firas可能,你想要吗?我没有在我的代码中测试它,因为我已经得到了上面的响应,但我重用了
圣先生夫人。这是一个好主意,包括,谢谢!我没有在我的代码中测试它,因为我已经得到了上面的响应,但我重用了st\.| mr\.| mrs\。这是一个好主意,包括,谢谢!
val pattern = """(?i)(?<=\.(?<!\bst\.)(?!(?:com|org)\b))\s*+(?!$)"""
val pattern = """(?i)(?<=(?<!\bst)\.)\s+"""
// val pattern = """(?i)(?<=\.(?<!\bst\.)(?!(?:com|org)\b))\s*+(?!$)""" // Pattern #2
val text = "here is an axample with cases like st. moris and google.com here. second sentence."
val list = text.split(pattern)
list.foreach(println)
here is an axample with cases like st. moris and google.com here.
second sentence.