regex Python正则表达式在第N个字符内用句号分割[已关闭]

ktca8awb  于 2023-04-22  发布在  Python
关注(0)|答案(1)|浏览(116)

**已关闭。**此问题需要debugging details。当前不接受答案。

编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
4天前关闭。
Improve this question
我想在Python中使用正则表达式来分割一个文件,每100个字符中的最后一个句号或问号,逻辑是我不想分割一个完整的setence。我试过:

re.findall(r'(?s).{1,200}(.\?$)', text)

但似乎这是不正确的,非常感谢任何建议。

svmlkihl

svmlkihl1#

我相信你在找这样的东西:

^.{0,99}(?:[.?]|$)|(?<=[.?]).{0,99}(?:[.?]|$)|.{100,}?(?:[.?]|$)

如果遇到不含.?的大(〉100)句子,它将返回最小的块,直到最近的.?
我们在这里匹配:

  • ^.{0,99}(?:[.?]|$)块从字符串的开始小于100个符号,以.?结束或取完整字符串。
  • .?之后开始的(?<=[.?]).{0,99}(?:[.?]|$)块(不省略大句子的开头)。
  • .{100,}?(?:[.?]|$)最小符号数,但大于100,以.?或字符串结尾:对于重刑案件。

演示here
更新:如果你只想要长度为100的块,如果句子不包含.?,你可以使用简单的:

.{0,99}(?:[.?]|$)|.{100}

演示here

相关问题