如何从字符串中提取疑问句
How to extract a interrogation sentence from a string
我有一个字符串。例如:
"This is a string.Is this a question?What is the Question? I Dont know what the question is. Can you please list out the question?"
我想使用正则表达式从本文中提取问题
我试过的
re.findall(r'(how|can|what|where|describe|who|when)(.*?)\s*\?',message,re.I|re.M))
但它也给出了其他的东西,如果我提出问题,它会将(如何,什么等)和问题的其余部分分开
对于上面的例子,我的输出是
[('is', ' is a string.Is this a question'), ('What', ' is the Question'), ('what', ' the question is. Can you please list out the question')]
我希望整个问题放在一起。
要将整个问题放在一起,您应该将整个模式括在括号中。
这是另一个简化版本:
\b([A-Z][^.!]*[?])
判断一个句子是否为疑问句时搜索关键词是完全不切实际的。鉴于你的列表:how|can|what|where|describe|who|when
,我可以轻松写出包含这些词之一的句子,这不是问题!
您可以通过多种方式来匹配句子。比如以this为基线:
^\s*[A-Za-z,;'"\s]+[.?!]$
我们可以先修改它以匹配同一字符串中的多个句子:
(^|(?<=[.?!]))\s*[A-Za-z,;'"\s]+[.?!]
这使用 look-behind 来确保一个句子刚刚结束(除非我们在字符串的开头)。
然后调整为只匹配以?
:
结尾的句子
(^|(?<=[.?!]))\s*[A-Za-z,;'"\s]+\?
Here is an online demo 我的正则表达式,在你的原始字符串上。
谢谢你帮助我
答案由@Fredrik 提供
可以在这里找到 https://regex101.com/r/rT1mQ0/2
\s*([^.?]*(?:how|can|what|where|describe|who|when)[^.?]*?\s*\?)
我有一个字符串。例如:
"This is a string.Is this a question?What is the Question? I Dont know what the question is. Can you please list out the question?" 我想使用正则表达式从本文中提取问题
我试过的
re.findall(r'(how|can|what|where|describe|who|when)(.*?)\s*\?',message,re.I|re.M))
但它也给出了其他的东西,如果我提出问题,它会将(如何,什么等)和问题的其余部分分开
对于上面的例子,我的输出是
[('is', ' is a string.Is this a question'), ('What', ' is the Question'), ('what', ' the question is. Can you please list out the question')]
我希望整个问题放在一起。
要将整个问题放在一起,您应该将整个模式括在括号中。
这是另一个简化版本:
\b([A-Z][^.!]*[?])
判断一个句子是否为疑问句时搜索关键词是完全不切实际的。鉴于你的列表:how|can|what|where|describe|who|when
,我可以轻松写出包含这些词之一的句子,这不是问题!
您可以通过多种方式来匹配句子。比如以this为基线:
^\s*[A-Za-z,;'"\s]+[.?!]$
我们可以先修改它以匹配同一字符串中的多个句子:
(^|(?<=[.?!]))\s*[A-Za-z,;'"\s]+[.?!]
这使用 look-behind 来确保一个句子刚刚结束(除非我们在字符串的开头)。
然后调整为只匹配以?
:
(^|(?<=[.?!]))\s*[A-Za-z,;'"\s]+\?
Here is an online demo 我的正则表达式,在你的原始字符串上。
谢谢你帮助我 答案由@Fredrik 提供 可以在这里找到 https://regex101.com/r/rT1mQ0/2
\s*([^.?]*(?:how|can|what|where|describe|who|when)[^.?]*?\s*\?)