Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正则表达式问题(python)_Python_Regex - Fatal编程技术网

正则表达式问题(python)

正则表达式问题(python),python,regex,Python,Regex,我想读一个word html文件,抓取任何包含名称字母的单词,但如果单词比名称长,则不打印它们 # compiling the regular expression: keyword = re.compile(r"^[(rR)|(yY)|(aA)|(nN)]{5}$/") if keyword.search (line): print line, 我用这个抓取单词,但似乎没有适当限制大小。您似乎在寻找关键字.match()而不是关键字.search()。您应该阅读其中讨论了匹配和搜索

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

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

if keyword.search (line):
    print line,

我用这个抓取单词,但似乎没有适当限制大小。

您似乎在寻找
关键字.match()
而不是
关键字.search()
。您应该阅读其中讨论了匹配和搜索之间的区别

而且,您的正则表达式似乎完全不正确
[
]
分隔一组字符,因此不能放置组,也不能在组周围设置逻辑。如前所述,表达式还将匹配所有
|
。您可以尝试以下方法:

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

您似乎在寻找
关键字.match()
而不是
关键字.search()
。您应该阅读其中讨论了匹配和搜索之间的区别

而且,您的正则表达式似乎完全不正确
[
]
分隔一组字符,因此不能放置组,也不能在组周围设置逻辑。如前所述,表达式还将匹配所有
|
。您可以尝试以下方法:

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
arrrN
Aar)N
()纽约
nnnn
马伦无
12Aar)努乌无
nnnn!没有一个
我的建议是:把RE中的
[…]
想象成在一个位置代表一个字符。所以括号之间的每个字符都是表示字符的选项之一

此外,正如阿德里安·普利松(Adrien Plisson)所说,括号中的许多特殊字符失去了它们的特殊性。因此,
(“
”)”
“|”
不定义组,或者,它们仅将这些字符与字母
'aarryyn'

“^[rryyann]{1,5}$”
将只匹配字符串,如'r',ar','YNa','YYnA','Nanny'

如果你想在文本中的任何地方匹配相同的单词,你需要
“[rryyann]{1,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
arrrN
Aar)N
()纽约
nnnn
马伦无
12Aar)努乌无
nnnn!没有一个
我的建议是:把RE中的
[…]
想象成在一个位置代表一个字符。所以括号之间的每个字符都是表示字符的选项之一

此外,正如阿德里安·普利松(Adrien Plisson)所说,括号中的许多特殊字符失去了它们的特殊性。因此,
(“
”)”
“|”
不定义组,或者,它们仅将这些字符与字母
'aarryyn'

“^[rryyann]{1,5}$”
将只匹配字符串,如'r',ar','YNa','YYnA','Nanny'

如果要在文本中的任何位置匹配相同的单词,则需要
“[rryyann]{1,5}”