对正则表达式加上英文句号判断
时间: 2023-07-07 21:14:52 浏览: 41
如果你想要在使用 `re.split("[?!]\s|[\s]{4,}",text)` 正则表达式分割后的句子中加上英文句号,并且只在句点不是用作缩写的情况下加上英文句号,可以修改正则表达式并结合字符串操作来实现。
具体步骤如下:
1. 使用 `re.split("(?<![A-Z][a-z])[\.\?!]\s|[\s]{4,}",text)` 正则表达式将文本分割成多个句子。这个正则表达式的作用是:
- `(?<![A-Z][a-z])` 表示否定回顾后断言,匹配前面不是由一个大写字母和一个小写字母组成的单词的位置。这样就可以避免将缩写中的句点当作分割点。
- `[\.\?!]\s` 表示匹配句点、问号或感叹号后面跟着一个空格的位置。
2. 对每个句子进行处理,如果句子末尾不是英文句号并且不是缩写中的句点,就加上一个英文句号;
3. 将处理后的句子列表使用空格连接起来。
下面是一个示例代码:
```python
import re
text = "Hello! How are you? Mr. Smith is fine, thank you. And you?"
# 使用正则表达式分割文本
sentences = re.split("(?<![A-Z][a-z])[\.\?!]\s|[\s]{4,}", text)
# 对每个句子进行处理,加上英文句号
new_sentences = []
for s in sentences:
s = s.strip()
if not s.endswith(".") and not s.endswith("?") and not s.endswith("!") and not re.search("\w\.$", s):
s += "."
new_sentences.append(s)
# 将处理后的句子列表连接起来
new_text = " ".join(new_sentences)
print(new_text)
```
运行结果:
```
Hello! How are you? Mr. Smith is fine, thank you. And you?
```
可以看到,原来的文本被分割成了三个句子,并且句点不是用作缩写的情况下加上了英文句号。注意,这个示例代码只是一种实现方式,具体的实现方式可以根据实际需求进行调整。