簡體   English   中英

Python正則表達式與單詞不匹配

[英]Python regex doesn't match words

鄉親們!

這里創建了許多關於正則表達式和unicode的線程,但不幸的是,在我的情況下它不起作用。

我有字符串:

 STR = "как надоела эта шляпа"

query = "шляпа"

我將字符串構建為:

compile = re.compile(u'\\b' + query + u'\\b')

如果我嘗試搜索:

search = compile.search(STR, re.U + re.I)

它返回None。 為什么我有這種正則表達式的行為?

您需要將標志傳遞到編譯階段。

STR = u"как надоела эта шляпа"
query = u"шляпа"
compile = re.compile(u'\\b' + query + u'\\b', re.U | re.I)
search = compile.search(STR)

根據Python的re文檔Pattern.search(string[, pos[, endpos]])二個參數是,其中搜索是開始字符串中的位置

查看您求和的值:

>>> print(re.U)
32
>>> print(re.I)
2
>>> print(re.I + re.U)
34

索引34之后的字符串中沒有匹配項。

因此,您可以在re.compile調用中傳遞re.Ire.U標志:

re.compile(ur'\b{}\b'.format(query), re.U | re.I)

或將它們用作模式中的內聯修飾符

re.compile(ur'(?ui)\b{}\b'.format(query))

或者使用第三個參數是flags的普通re.search

re.search(ur'\b{}\b'.format(query), STR, re.I | re.U)

Python代碼演示

import re
STR = u"как надоела эта шляпа"
query = u"шляпа"
compile = re.compile(ur'\b{}\b'.format(query), re.U | re.I)
search = compile.search(STR)
print(search.group()) # => шляпа

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM