Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.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
用于从大文本Python3返回第一句的正则表达式_Python_Regex - Fatal编程技术网

用于从大文本Python3返回第一句的正则表达式

用于从大文本Python3返回第一句的正则表达式,python,regex,Python,Regex,我想从课文中得到第一句话。我遇到了各种文本格式。使用Python3 re.split()。我编写的正则表达式:'.*\。[A-Z]“意思是在出现格式之前,可以接受任何内容。 这在90%的案例中都有效,第一句中带有“Dr.Firstname Lastname”的案例打破了模式,它在Firstname之前一直是第一句。我想尝试排除像“Dr.[A-Z]”这样的子字符串,但找不到方法。有什么想法吗?谢谢 样本:Martin Laurance博士对美国和西班牙的降雨进行了研究。这是美国的最新研究。其他任何

我想从课文中得到第一句话。我遇到了各种文本格式。
使用Python3 re.split()
。我编写的正则表达式:
'.*\。[A-Z]“
意思是在出现格式之前,可以接受任何内容。
这在90%的案例中都有效,第一句中带有“Dr.Firstname Lastname”的案例打破了模式,它在Firstname之前一直是第一句。
我想尝试排除像“Dr.[A-Z]”这样的子字符串,但找不到方法。
有什么想法吗?谢谢

样本:Martin Laurance博士对美国和西班牙的降雨进行了研究。这是美国的最新研究。其他任何东西都会被忽略。

想消磨一两分钟(或25;),所以我想出了这个(根本不是万无一失的)解决方案:

(?i).*?\b((?=[a-z']*[aoueiy])(?=[a-z']*[^aoueiy])\w{2,}\.)
它所做的是识别一个单词,后跟一个句号。要将这个词与任何缩写词分开,它需要搜索一个字符序列(
{2,}
=1以上),该序列至少包含一个元音和一个辅音。这是通过在匹配单词之前使用两个“look a heads”来实现的

在单词中查找元音:
(?=[a-z]*[aoueiy])

[a-z]*
=后跟字符类的任意字母数
[aoueiy]
-元音

辅音是相同的,只有与任何辅音匹配的否定字符类
[^aoueiy]
(以及任何其他非字母,但由于匹配的是字母,所以不重要;)

请注意,这当然与完整的语言解析器没有什么相似之处,但它在许多情况下都可以工作。它会漏掉的一件事是句子以一个字母单词“I”结尾。比如“我们在一起很好,你和我”


想消磨一两分钟(或25;),所以我想出了这个(根本不是万无一失的)解决方案:

(?i).*?\b((?=[a-z']*[aoueiy])(?=[a-z']*[^aoueiy])\w{2,}\.)
它所做的是识别一个单词,后跟一个句号。要将这个词与任何缩写词分开,它需要搜索一个字符序列(
{2,}
=1以上),该序列至少包含一个元音和一个辅音。这是通过在匹配单词之前使用两个“look a heads”来实现的

在单词中查找元音:
(?=[a-z]*[aoueiy])

[a-z]*
=后跟字符类的任意字母数
[aoueiy]
-元音

辅音是相同的,只有与任何辅音匹配的否定字符类
[^aoueiy]
(以及任何其他非字母,但由于匹配的是字母,所以不重要;)

请注意,这当然与完整的语言解析器没有什么相似之处,但它在许多情况下都可以工作。它会漏掉的一件事是句子以一个字母单词“I”结尾。比如“我们在一起很好,你和我”


不要重新发明轮子,这个问题以前已经解决过。
当使用
Python
(您的链接建议的内容)时,尝试一下:

这就产生了

The rain in U.S.A. and Spain is researched by Dr. Martin Laurance.
This is the latest U.S.A. study.
Anything else will just be ignored.

不要重新发明轮子,这个问题以前已经解决过。
当使用
Python
(您的链接建议的内容)时,尝试一下:

这就产生了

The rain in U.S.A. and Spain is researched by Dr. Martin Laurance.
This is the latest U.S.A. study.
Anything else will just be ignored.

请添加一些真实的输入字符串并标记有问题的编程语言。此外,您可能正在寻找语言处理工具(例如
nltk
for
Python
),而不仅仅是正则表达式。您可能会遇到使用机器学习算法已经解决的问题(例如,
Prof.Dr.
U.A.
,等等)。没有写任何细节,因为不管它是python还是其他什么东西,它都是一样的。“这是美国的研究”vs“这是美国的研究”。表明如果你不标记句子的结尾,就不会只使用正则表达式。请添加一些真正的输入字符串并标记有问题的编程语言。此外,您可能正在寻找语言处理工具(例如
nltk
for
Python
),而不仅仅是正则表达式。您可能会遇到使用机器学习算法已经解决的问题(例如,
Prof.Dr.
U.A.
,等等)。没有写任何细节,因为不管是python还是其他任何东西,它都是一样的。“这是美国的研究”vs“这是美国的研究”。这表明,如果你不标记句子的结尾,你不会只使用正则表达式。我只花了一分钟来打破它。“这句话不会被捕获,因为它使用了一个共奏曲。”;-)@您发表评论时,Darkproduct正在修复该问题;)我也没有处理撇号。我只是花了一分钟来打破它。“这句话不会被捕获,因为它使用了一个共奏曲。”;-)@您发表评论时,Darkproduct正在修复该问题;)也没有处理撇号。