提问者:小点点

正则表达式:避免在句点后包含字母的单词


我感兴趣的是选择任何形式的ES字母作为字符串中的第一个单词,它可以被其任何不同形式(E.S.E-SE-SE)替换

考虑名称的完整数据集:

E.S.P. BS.
E. & S. BS.
ES ENERGY
E.S.C. BS.
E.S. BS.
E.S.K. BS.
E.S.G. BS.
ES.K.JI BS.

仅应考虑包含任何形式的ES的词语。例如,E.S.E-SE-SE

这里的分析只是第一个字。不应包括以下内容,因为在ES形式之后,第一个单词包含更多字母:

E.S.P. BS. #Extra P.
E.S.C. BS. #Extra C.
E.S.K. BS. #Extra K.
E.S.G. BS. #Extra G.
ES.K.JI BS. #Extra K.JI

另一方面,正确获取这些字符串:

E. & S. BS.
ES ENERGY
E.S. BS.

我用于此选择的正则表达式是下一个:

^(e\W*s)\W*(?!\w)\b

我不知道为什么这个正则表达式模式不起作用。如何确保只考虑任何形式的ES

谢啦


共1个答案

匿名用户

我假设第一个单词的最后一个字符是第一个字符,等于或紧随其后的是一个空格。如果是这样,您可以使用re.findall将字符串与以下正则表达式匹配。

r'^[^A-Z]*E[^A-Z]*S[^A-Z ]*(?= )'

启动你的引擎!