正则表达式问题(python)
我想读一个word html文件,抓取任何包含名称字母的单词,但如果单词比名称长,则不打印它们正则表达式问题(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()。您应该阅读其中讨论了匹配和搜索
# 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}”