我需要一个模式来删除部分字符串,例如"字母+空格+字母+空格..."直到第一个点。例如,在字符串
中D o c t o r。我会给你一张处方。
模式应匹配" D o c t o r。 "
现在我有一个模式([A-Za-z]\s?)+\.
但它匹配我需要的更多子串。任何想法如何纠正它?非常感谢。
答案 0 :(得分:2)
如果在每个字母前需要单词边界,则字母之间需要空格。现在,可以匹配连续的字母,因为空白模式是可选的(1或0次出现)。
所以,你可以使用
(\b[A-Za-z]\s?)+\.
或者,或者,使用
\b[A-Za-z](?:\s[A-Za-z])+\.
请参阅regex demo。这里,
\b
- 匹配前导词边界[A-Za-z]
- 一封信(?:\s[A-Za-z])+
- 1个或更多(注意,如果您还想匹配1个字母+点序列,将+
替换为*
量词)连续出现的
\s
- 空白[A-Za-z]
- 一封信\.
- 一个点。