Python 匹配由另一个正则表达式分隔的所有内容?
我目前正在尝试制作一个正则表达式,它可以在一个文本块中找到所有的句子,到目前为止我已经得到了这个Python 匹配由另一个正则表达式分隔的所有内容?,python,regex,sentence,Python,Regex,Sentence,我目前正在尝试制作一个正则表达式,它可以在一个文本块中找到所有的句子,到目前为止我已经得到了这个 (?=(?<!mr)\.|(?<!mrs)\.|\?|!)+ 它会找到所有能界定一个句子的东西。我希望正则表达式能够找到包含在此正则表达式找到的内容之间的所有内容,但我真的不知道从这里可以走到哪里。这个呢: import re pattern = r'(?=(?<!mr)\.|(?<!mrs)\.|\?|!)+' # I'm assuming this does what
(?=(?<!mr)\.|(?<!mrs)\.|\?|!)+
它会找到所有能界定一个句子的东西。我希望正则表达式能够找到包含在此正则表达式找到的内容之间的所有内容,但我真的不知道从这里可以走到哪里。这个呢:
import re
pattern = r'(?=(?<!mr)\.|(?<!mrs)\.|\?|!)+' # I'm assuming this does what you say it does :)
text_block = """long block of sentences"""
sentences = re.split(pattern, text_block)
例:
从你的封闭式问题中移出
在你的例子中,lookbehind应该出现在periods之前。
浓缩你的表情,是吗
更新-在这两者之间,您可以拆分丢弃的分隔符
# (?:(?<!mr)(?<!mrs)\.|\?|!)+
(?:
(?<! mr )
(?<! mrs )
\.
| \?
| !
)+
或者,分割保留分隔符
# ((?:(?<!mr)(?<!mrs)\.|\?|!)+)
(
(?:
(?<! mr )
(?<! mrs )
\.
| \?
| !
)+
)
这个正则表达式的拆分怎么样?拆分?什么意思?编辑:哦,老兄,这很有道理。谢谢。我不知道python语法,但我认为它存在一个拆分运算符。@user2373676给出了一个具有预期输出的示例。这是可行的,但它仍然会在最终列表中添加句号、感叹号和问号。我同时添加了两种方式。拆分以保留/放弃delimeters。记住,在匹配文字后不要使用lookbehinds,除非在lookbehind中包含该文字。例如:\。?等于?
# (?:(?<!mr)(?<!mrs)\.|\?|!)+
(?:
(?<! mr )
(?<! mrs )
\.
| \?
| !
)+
# ((?:(?<!mr)(?<!mrs)\.|\?|!)+)
(
(?:
(?<! mr )
(?<! mrs )
\.
| \?
| !
)+
)