如何用Regex提取句内中间大写单词?忽略句首及标点后大写词
如何用正则匹配句中(非句首/标点后)的大写单词
要实现忽略段落开头、句号/问号/感叹号后大写单词,仅匹配句中间的大写单词,可以使用负向零宽断言精准限定匹配条件,替代你当前的[A-Z][^\s]*正则。
最终正则表达式
(?<!^)(?<![.!?]\s)[A-Z][^\s]*
正则各部分解释
(?<!^):负向预查,确保匹配的单词不在字符串起始位置,排除段落开头的大写单词(比如示例中的"A")(?<![.!?]\s):负向预查,确保匹配位置前不是「标点符号(.?!)+空格」的组合,排除标点后新句子开头的大写单词(比如示例中的"How")[A-Z][^\s]*:匹配以大写字母开头、后续跟任意非空白字符的完整单词(即目标大写单词)
示例验证
针对你提供的示例语句:
A sentence containing Capital letters. How to Extract only capital letters?
使用该正则匹配后,仅会提取出Capital,完全符合需求。
内容的提问来源于stack exchange,提问作者Programmer_nltk
相关产品推荐
相关产品推荐

