回答

收藏

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

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

我需要从字符串中提取两个定界符之间包含的一组字符,而不返回定界符本身。
8 o- ?# R5 [( _5 M. D5 g一个简单的例子应该会有所帮助:
1 u1 z# A4 Q6 K- T目标:提取方括号之间的子字符串,而不返回括号本身。  L- q- l! S7 r. s
基本字串:This is a test string [more or less]4 f/ f. q& I6 D# ~9 v: U" ?7 K; c% u
如果我使用以下规则。前任。3 _* D/ Z* p+ C
\ [。*?\]
) i* P" T" M$ _% q1 C" V6 n; N  ]/ R1 H+ R
比赛是[more or less]。我只需要得到more or less(没有括号)。
7 f8 ?0 G/ `8 v* Q3 H有可能做到吗?! N* A, f! I, r: R* q& P& }# V
                ' j. ~+ ?* f6 h/ ?- G  A- o
解决方案:* f  z- W' h6 X- o9 q$ s! E$ t& T
                ' Z( K5 J& }- G7 h* Y
# l: P! c/ l% H! h* M9 P
7 d0 W; l( E% t# Q$ g
                简单易行:
- r0 W) B0 O# p(?从技术上讲,这是使用先行和后备。请参阅前瞻和零宽度断言。该模式包括:
" x% K3 w: M4 a7 h) u( H/ h: Z前面有一个[未捕获(向后看);4 c6 h) n( _/ a
一个非贪婪的捕获群体。停在第一个]是不贪心的;和
8 x" r+ q1 T! q  C/ [' I4 _0 y. M后跟一个未捕获的](超前)。+ S* I3 ^5 W4 k: c2 e
另外,您也可以捕获方括号之间的内容:  x8 c8 P- U6 t2 M7 S4 L
\[(.*?)\]
2 J9 w! ?3 A" z
; x3 c: R: a' x5 F并返回第一个捕获的组,而不是整个匹配项。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则