Py学习  »  Python

无法使用regex和python查找特定字符串(中间有通配符)[duplicate]

stygarfield • 4 年前 • 811 次点击  

示例文本:

\nInternet空间=\n188交叉克里卡3\n1010hgh shicle\n“

我试图从示例文本中分别提取H[(通配符)和A[(通配符)。

如果我用 x = re.search('H\[.*\]', ocr[0]) 它找到整根绳子 H[ 12 ]\nA[ O ]

如果我用 'A\[.*\]' 它会自己找到A[O]——但我似乎不能只找到H[12]。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/52865
 
811 次点击  
文章 [ 3 ]  |  最新文章 4 年前
Pan Christensen
Reply   •   1 楼
Pan Christensen    4 年前

试试这个:

H\[ (\w+) \](?:.|\n)+A\[ (\w+) \]

如果您知道H和A参数将始终由换行符分隔,而没有其他内容,请替换 (?:.|\n)+ 只有 \n .

我不确定H和A变量的内容是什么,但是 \w 应该能抓住大部分。

iiKop47
Reply   •   2 楼
iiKop47    4 年前

这与Python正则表达式库中贪婪的限定符有关: https://docs.python.org/3/library/re.html . 按ctrl-F键查找: 贪婪的 .

贪婪的限定词 * 希望匹配尽可能多的字符。为了让它不贪婪 ? 应该引入限定符。因此,修正的regex可以是: H\[.*?\]

要使此搜索适用于任何大写字母字符,请尝试: [A-Z]\[.*?\]

希望这有帮助!

Tim Biegeleisen
Reply   •   3 楼
Tim Biegeleisen    4 年前

使用非贪婪模式:

\b[AH]\[.*?\]

Python脚本:

inp = "UNCKEV\nPumpkins 10/1/20-2030\nRunners\nha\nH[ 12 ]\nA[ O ]\nKNOWLEDGI\nPLA\nDISTRIBUTION\nHOME TEAM\nPINK VISITING TEAM\nBLANCHE BUREAU NATIONAL\nJAUNE \u00c9C\nALE\nPR\u00c9CISER LES DE\nSEULEMENT\nOFF\nSORTIE\nSTART\nD\u00c9BUT\nON\nRETOUR\nPER\nP\u00c9R.\nMIN\nSERV\nPURG\nOFFENCE\nINFRACTION\nDUR\u00c9E\nNo.\nDU\nNeinterferCACE =\n188 Cross clicak 3\n1010hgh shicle\n"
matches = re.findall(r'\b[AH]\[.*?\]', inp)
print(matches)

这张照片:

['H[ 12 ]', 'A[ O ]']