【发布时间】:2020-09-03 18:57:35
【问题描述】:
我有兴趣选择任何形式的 ES 字母作为字符串中的第一个单词,它可能会被其任何不同形式(E.S. 或 E-S 或 E - S、E&S 或 @ 987654327@ 或 E S 或 E/S 或 E<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-S 或E - S,E&S 或E & S 或E 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?
谢谢
【问题讨论】:
-
规则不是 100% 清楚,但可能以
^E(?:\s*\W\s*)*S\b(?!\.[A-Z])开头?演示:regex101.com/r/4S7CW4/1 -
r"^E[\. &]*S\.? "适用于您的示例名称列表。您可以在字符类中添加更多标点字符。
标签: python regex regex-lookarounds