3 回答

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊
該點(diǎn).
還可以匹配反引號(hào),因此該模式從匹配反引號(hào)開始,并且能夠匹配所有字符,直到它到達(dá)中的文字點(diǎn)[.]
無需使用非貪婪量詞,您可以使用否定字符類僅防止跨越反引號(hào)邊界。
`[^`]*`\.`[^`]*`
星號(hào)*
匹配 0 次或多次。如果必須至少有一個(gè)字符,并且不需要換行符和空格,則可以添加\s
以防止匹配空白字符并使用+
來匹配 1 次或多次。
`[^`\s]+`\.`[^`\s]+`
例如
import re
query = "SELECT `asd`.`ssss` as `column1`, `ss`.`wwwwwww` from `table`"
table_and_columns = re.findall('`[^`\s]+`\.`[^`\s]+`',query)
print(table_and_columns)
輸出
['`asd`.`ssss`', '`ss`.`wwwwwww`']

TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個(gè)贊
問題是 .*?
匹配任何字符(行終止符除外)甚至空格。另外,由于您已經(jīng)在使用*
,這意味著出現(xiàn) 0 次或無限次,不確定您是否需要使用?
. 所以這似乎有效:
\`\S+\`[.]\`\S+\`
其中\S
是任何非空白字符。您始終可以使用https://regex101.com檢查正則表達(dá)式
添加回答
舉報(bào)