繁体   English   中英

正则表达式问题(python)

[英]regular expression question (python)

我想读一个单词html文件并抓住任何包含名字字母的单词,但如果单词长于名字则不打印它们

# compiling the regular expression:
keyword = re.compile(r"^[(rR)|(yY)|(aA)|(nN)]{5}$/")

if keyword.search (line):
    print line,

我正在抓住这个词,但似乎没有正确限制大小。

看来你正在寻找keyword.match()而不是keyword.search() 你应该阅读python文档的这一部分 ,讨论匹配和搜索之间的区别。

另外,你的正则表达式似乎完全关闭... []分隔一组字符,因此你不能放置组并在组周围有一个逻辑。 如上所述,您的表达式也将匹配所有()| 你可以尝试以下方法:

keyword = re.compile(r"^[rRyYaAnN]{5}$")

您的RE "^[(rR)|(yY)|(aA)|(nN)]{5}$/"永远不会永远不会在地球和其他地方的任何字符串中给出匹配,我想,因为'/' '$'之后'$' '/'人物'$'

看到没有这个'/'的RE的结果:

import re

pat = re.compile("^[(rR)|(yY)|(aA)|(nN)]{5}$")

for ch in ('arrrN','Aar)N','()|Ny','NNNNN',
           'marrrN','12Aar)NUUU','NNNNN!'):
    print ch.ljust(15),pat.search(ch)

结果

arrrN           <_sre.SRE_Match object at 0x011C8EC8>
Aar)N           <_sre.SRE_Match object at 0x011C8EC8>
()|Ny           <_sre.SRE_Match object at 0x011C8EC8>
NNNNN           <_sre.SRE_Match object at 0x011C8EC8>
marrrN          None
12Aar)NUUU      None
NNNNN!          None

我的建议:将RE中的[.....]视为代表一个角色的一个角色。 因此,括号之间的每个字符都是表示字符的选项之一。

而且,正如Adrien Plisson所说,在括号[......]之间,许多特殊人物失去了他们的专长。 因此'('')''|' 不定义组和OR,它们只代表这些字符作为一些选项以及字母'aArRyYnN'

"^[rRyYaAnN]{1,5}$"只匹配字符串'r',ar','YNa','YYnA','Nanny'

如果您想在文本中的任何位置匹配相同的单词,则需要"[rRyYaAnN]{1,5}"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM