【发布时间】:2020-05-15 09:58:32
【问题描述】:
我有几个人的文本和他们的演讲。我需要提取人们的姓名和他们的党员身份。问题是有些人不是党员,我希望他们被排除在外。
我正在使用的文本是按以下方式构造的:
string = 'Author A. B., party member X. Some text. Author G. H., party Y. Some text. Author K. L., somebody. Text that mentions party. Author R. H., party X. Some text.'
我想要的结果是:
'Author A. B., party member X.'
'Author G. H., party Y.'
'Author R. H., party X.'
我用过
str_extract_all(string, '[A-Z]\\w{1,50}\\s[A-Z]\\.\\s[A-Z]\\.,\\s(.*?)party(.*?)\\.')
作为模式请求,它运行良好,但它也匹配 Author K. L., somebody. Text that mentions party. 并且应该被排除。我试图实现异常标记[^\\.] 并匹配[A-Z]\\w{1,50}\\s[A-Z]\\.\\s[A-Z]\\.,\\s(.*?)[^\\.](.*?)party(.*?)\\.,但给出了扭曲的结果。
如果作者姓名和单词party 之间没有点,我需要找到匹配项。如果 - 之间有一个点,则不应匹配。有人可以帮我解决这个问题吗?
【问题讨论】:
-
喜欢这里,regex101.com/r/1nZ3H3/1?我认为您甚至可以将
(.*?)party中的.*?替换为[\w\s]*