更新時(shí)間:2021-10-28 10:44:59 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1176次
對(duì)于如何提取部分正則表達(dá)式字符串?小編給大家舉一個(gè)例子:
有一個(gè)字符串的形式
Foo
"Foo"
"Some Foo"
"Some Foo and more"
需要提取引號(hào)中的值Foo,并且可以被任意數(shù)量的字母數(shù)字和空格字符包圍.所以,對(duì)于上面的例子,希望輸出
<NoMatch>
Foo
Foo
Foo
一直試圖讓這個(gè)工作,這是到目前為止使用lookahead / lookbehind引用的模式.這適用于“Foo”但不適用于其他人.
(?<=")Foo(?=")
進(jìn)一步擴(kuò)大到這個(gè)
(?<=")(?<=.*?)Foo(?=.*?)(?=")
不起作用.
如果引號(hào)被正確平衡并且引用的字符串不跨越多行,那么您可以簡(jiǎn)單地向前看字符串以檢查是否跟隨偶數(shù)引號(hào).如果不是這樣,我們知道我們?cè)谝粋€(gè)帶引號(hào)的字符串中:
Foo(?![^"\r\n]*(?:"[^"\r\n]*"[^"\r\n]*)*$)
說(shuō)明:
Foo # Match Foo
(?! # only if the following can't be matched here:
[^"\r\n]* # Any number of characters except quotes or newlines
(?: # followed by
"[^"\r\n]* # (a quote and any number of non-quotes/newlines
"[^"\r\n]* # twice)
)* # any number of times.
$ # End of the line
) # End of lookahead assertion
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743