更新時間:2021-10-28 10:44:59 來源:動力節點 瀏覽1185次
對于如何提取部分正則表達式字符串?小編給大家舉一個例子:
有一個字符串的形式
Foo
"Foo"
"Some Foo"
"Some Foo and more"
需要提取引號中的值Foo,并且可以被任意數量的字母數字和空格字符包圍.所以,對于上面的例子,希望輸出
<NoMatch>
Foo
Foo
Foo
一直試圖讓這個工作,這是到目前為止使用lookahead / lookbehind引用的模式.這適用于“Foo”但不適用于其他人.
(?<=")Foo(?=")
進一步擴大到這個
(?<=")(?<=.*?)Foo(?=.*?)(?=")
不起作用.
如果引號被正確平衡并且引用的字符串不跨越多行,那么您可以簡單地向前看字符串以檢查是否跟隨偶數引號.如果不是這樣,我們知道我們在一個帶引號的字符串中:
Foo(?![^"\r\n]*(?:"[^"\r\n]*"[^"\r\n]*)*$)
說明:
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基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習