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

Regex: Avoid words which include letter after period

我有兴趣选择任何形式的 ES 个字母作为字符串中的第一个单词,该字符串可能会被其任何不同形式(E.S.E-SE - SE&SE & SE SE/SE<punctuation>S) 而不仅仅是 ES。同一个词中不应出现其他字母。

考虑姓名的完整数据集:

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&SE & SE S

这里只分析第一个字。以下不应包含,因为在 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

谢谢

我假设第一个单词的最后一个字符是等于或跟在 'S' 之后的第一个字符,然后是 space。如果是这样,您可以使用 re.findall 将字符串与以下正则表达式匹配。

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

Start your engine! <¯\(ツ)> Python code