我正在尝试替换所有标点符号“。”除非有句号之前加上数字,否则应使用带换行符的字符串。
我的代码是:
response1 = re.sub(r'\. ',
r'.\n',
response1)
但是我不知道如何使它工作。我已经尝试了一些解决方案来消除在互联网上找到的Regex,但是我不知道自己在做什么。
^((?![0-9]{0,}\. ))$
输入:
Lorem ipsum. 1. dolor sit amet Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 2. Ut enim ad minim veniam Quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo.
输出:
Lorem ipsum.
1. dolor sit amet Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
2. Ut enim ad minim veniam Quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo.
理想的输出为(注意:“ [0-9] {0,1}(。*)”之后的大写字母。Exp“ Consectetur”):
Lorem ipsum.
1. dolor sit amet
Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
2. Ut enim ad minim veniam
Quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo.
谢谢
答案 0 :(得分:1)
听起来好像您想检查在.
前面是否有至少个数字,而不是在点之前是否有{0,2}
个数字。 (毕竟,始终会满足对重复 0 次的任何操作的负向查询)
在.
之前先加上一个负向后的数字,然后
(?<![0-9])\. *
(请确保尾随空格匹配,以便可以替换)
并用换行符和点代替
.\n
也可以用换行符替换大写字母后面的位置,您可以替代并使用
(?<![0-9])(\.) *|(?<![0-9]\. )(?!^)(?=[A-Z])
(?<![0-9]\. )
-确保在##.
(?!^)
-确保此位置不在字符串的开头(?=[A-Z])
-前瞻大写字母并替换为
\1\n