我正在使用正则表达式来匹配F. Supp.
或F.3d
但不是On June
或foobar
。
到目前为止,我有[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。
答案 0 :(得分:1)
如果您只想让字符串包含.
,则可以使用in
操作数:
if '.' in word
使用正则表达式,您可以使用正面环视来确保字符串中有一个点.
:
([\w ]+)?(?=\.).([\w ]+)?
答案 1 :(得分:1)
要要求某个字符,您必须以正则表达式提供该字符,而不需要*
或?
等可选的量化器。您正则表达式模式有点误导,因为您在其中指定了文字|
符号。
尝试使用[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|\.]*