簡體   English   中英

匹配由另一個正則表達式分隔的所有內容?

[英]Match everything delimited by another regex?

我目前正在嘗試制作一個正則表達式,以便在一段文本中查找所有句子,到目前為止,我已經掌握了這一點。

(?=(?<!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)

sentences將是包含結果子字符串的列表。 re.split將把text_block拆分成返回list不同元素。 它在pattern匹配的每個點處拆分。

在這里閱讀有關re的信息:

https://docs.python.org/2/howto/regex.html

編輯(從封閉的較新問題中導入的數據):

如果您收到諸如?,!之類的符號 等等。您還應嘗試刪除外部括號,如下所示:

re.split(r"\.(?<!mr)|\.(?<!mrs)|\?|!", somestring)

例如:

sentences = [s for s in re.split(r"\.(?<!mr)|\.(?<!mrs)|\?|!", somestring) if s]

(從您已關閉的較新問題中刪除)
對於您而言,后向應該早於句點。
濃縮你的表情

更新 -在它們之間,您可以拆分丟棄定界符

 # (?:(?<!mr)(?<!mrs)\.|\?|!)+

 (?:
      (?<! mr )
      (?<! mrs )
      \.
   |  \?
   |  !
 )+

或者,分割保留定界符

 # ((?:(?<!mr)(?<!mrs)\.|\?|!)+)

 (
      (?:
           (?<! mr )
           (?<! mrs )
           \.
        |  \?
        |  !
      )+
 )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM