示例文本:
\nInternet空间=\n188交叉克里卡3\n1010hgh shicle\n“
我试图从示例文本中分别提取H[(通配符)和A[(通配符)。
如果我用 x = re.search('H\[.*\]', ocr[0]) 它找到整根绳子 H[ 12 ]\nA[ O ]
x = re.search('H\[.*\]', ocr[0])
H[ 12 ]\nA[ O ]
如果我用 'A\[.*\]' 它会自己找到A[O]——但我似乎不能只找到H[12]。
'A\[.*\]'
试试这个:
H\[ (\w+) \](?:.|\n)+A\[ (\w+) \]
如果您知道H和A参数将始终由换行符分隔,而没有其他内容,请替换 (?:.|\n)+ 只有 \n .
(?:.|\n)+
\n
我不确定H和A变量的内容是什么,但是 \w 应该能抓住大部分。
\w
这与Python正则表达式库中贪婪的限定符有关: https://docs.python.org/3/library/re.html . 按ctrl-F键查找: 贪婪的 .
贪婪的限定词 * 希望匹配尽可能多的字符。为了让它不贪婪 ? 应该引入限定符。因此,修正的regex可以是: H\[.*?\]
*
?
H\[.*?\]
要使此搜索适用于任何大写字母字符,请尝试: [A-Z]\[.*?\]
[A-Z]\[.*?\]
希望这有帮助!
使用非贪婪模式:
\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 ]']