在比赛的任何地方都需要角色

时间:2015-03-17 22:50:50

标签: python regex string

我正在使用正则表达式来匹配F. Supp.F.3d但不是On Junefoobar

到目前为止,我有[A-Z][ ]?[A-Z|a-z|\.| ][A-Z|a-z|\.| |0-9]+。它几乎就在那里,但仍然匹配On June。我想要一个.(句号),但我想允许它在比赛的任何地方。

我认为我需要使用积极的前瞻,但我的尝试不起作用:(?=[.])[A-Z][ ]?[A-Z|a-z|\.| ][A-Z|a-z|\.| |0-9]+

我正在使用Python。

3 个答案:

答案 0 :(得分:1)

如果您只想让字符串包含.,则可以使用in操作数:

if '.' in word

使用正则表达式,您可以使用正面环视来确保字符串中有一个点.

([\w ]+)?(?=\.).([\w ]+)?

Regular expression visualization

Debuggex Demo

答案 1 :(得分:1)

要求某个字符,您必须以正则表达式提供该字符,而不需要*? 等可选的量化器。您正则表达式模式有点误导,因为您在其中指定了文字|符号。

enter image description here

尝试使用[A-Z] ?\.(?i)[a-z. 0-9]+正则表达式模式。

请参阅example

import re
p = re.compile(ur'([A-Z] ?\.(?i)[a-z. 0-9]+)')
test_str = u"F. Supp.\nF.3d\nOn June\nfoobar"

re.findall(p, test_str)

答案 2 :(得分:0)

这有用吗?

[A-z| |\d]*\.[A-z| |\d|\.]*