我想删除首字母缩写词中的点,但不要删除python字符串中的域名。例如, 我希望字符串删除首字母缩写词的正则表达式的正则表达式是什么?
'a.b.c. [email protected] http://www.test.com'
成为
'abc [email protected] http://www.test.com'
我做的最接近的正则表达式到目前为止
re.sub('(?:\s|\A).{1}\.',lambda s: s.group()[0:2], s)
其结果
'ab.c. [email protected] http://www.test.com'
它似乎f或上述正则表达式来工作,我需要正则表达式更改为
(?:\s|\A|\G).{1}\.
但不存在匹配标记(\ G)在Python结束。
编辑:正如我在我的评论中提到的,字符串没有特定的格式。这些字符串包含非正式的人类对话,因此可能包含零个,一个或几个缩略词或域名。如果能够让我免于编码一个“真正的”解析器,那么我的一些错误就没有问题了。
恕我直言,一个正则表达式是不您的问题的正确工具。这可能是可能的,但会导致代码过于复杂。我会采用更传统的方法,并使用混合正则表达式和Python代码将字符串拆分为其组件(普通文本,缩略词,...),并单独处理这些部分。更详细但也更易于维护。 – sebasgo 2009-08-14 17:36:39
我可能应该提到我将它用作一系列其他正则表达式的一部分,用于规范表示非正式人类对话的字符串序列。我可以容忍一些错误,如果这会让我无法进行更彻底的解析。 – ianalis 2009-08-14 21:27:52
您需要更好地指定问题。你的数据总是在三个空间分开的部分,你只想影响第一部分?或者您是否需要将此应用于任意文本?如果后者,你会如何定义一个首字母缩略词?只有单个字母?如果是这样,那么您期望http://a.b.example.com会发生什么?或者,除非你知道它是域名的一部分,否则你想删除嵌入的时段?但是,这只会引出一个问题:它是什么时候成为域名的一部分:After @ or http://?那么ssh:或其他URL方案呢?一旦定义,任何这些将是一个简单的正则表达式。 – MtnViewMark 2009-08-14 21:46:07