回答

收藏

正则表达式,查找不包括定界符的两个字符之间包含的字符串

技术问答 技术问答 190 人阅读 | 0 人回复 | 2023-09-14

我需要从字符串中提取两个定界符之间包含的一组字符,而不返回定界符本身。
$ e' [  t6 y/ V4 W/ b. o' x一个简单的例子应该会有所帮助:
' |( z: u- `# Z$ R0 r: h! K目标:提取方括号之间的子字符串,而不返回括号本身。6 j8 B2 s5 }$ w; ]4 e- g1 R
基本字串:This is a test string [more or less]( ]! a6 P; `* `& J1 y
如果我使用以下规则。前任。
/ E/ J+ Q) W7 a! K4 n# e\ [。*?\]/ S1 e# d7 i# q. I" {
5 X8 e3 F( n) F& Z: p' U
比赛是[more or less]。我只需要得到more or less(没有括号)。9 K1 t9 c& n( f
有可能做到吗?& g& w/ }+ A# R' R
                . ]# @+ k" Y+ d3 p5 D2 S
解决方案:
6 S1 D, O, G, g5 I+ y! L               
2 n6 m; h! ]# ~/ C* d  `7 g3 s5 i/ U9 ?7 t
: F4 V0 u# D# `, T) }, p, V2 t
                简单易行:& q  E7 u: w4 `. t* I( Y* c+ \
(?从技术上讲,这是使用先行和后备。请参阅前瞻和零宽度断言。该模式包括:
9 R3 F) q- Q; o  K% w3 h- H前面有一个[未捕获(向后看);
5 P9 r. Q# S( {  D3 l! \7 z  ?5 I一个非贪婪的捕获群体。停在第一个]是不贪心的;和
0 e4 j2 U/ ]5 }: t& q后跟一个未捕获的](超前)。
2 Z9 u1 W$ `, v: v# H$ {" Z$ j7 g: }* I另外,您也可以捕获方括号之间的内容:
& {$ k3 U4 f  l\[(.*?)\]
4 t' g& u) B& Q
; d7 b% T9 F. o. C# y9 q" @并返回第一个捕获的组,而不是整个匹配项。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则